У меня есть many-many assocition между Сотрудником и Командой. Объект Foreach у меня есть репозиторий.
Теперь я использую ASP.NET MVC, и я создал EmployeeController. Я также создал Представление для редактирования Сотрудника. Для этого представления мне нужен DropDownList со всеми Командами. Проблема состоит в том, что мой EmployeeController только имеет EmployeeRepository. Таким образом, как я могу получить все Команды? Мое решение теперь состоит в том, чтобы использовать два репозитория.
Но действительно ли это - хорошее решение?
Я мог вместо этого создать TeamController и записать метод, возвратив все Команды (как я сделал бы это)?
Если вы посмотрите на то, что может дать ваш фрагмент кода:
CultureInfo c1 = CultureInfo.InvariantCulture;
CultureInfo c2 = new CultureInfo("en-US");
Console.WriteLine( c1.DateTimeFormat.ShortDatePattern.ToString());
Console.WriteLine( c2.DateTimeFormat.ShortDatePattern.ToString());
Console.WriteLine( c1.DateTimeFormat.LongDatePattern.ToString());
Console.WriteLine( c2.DateTimeFormat.LongDatePattern.ToString());
Console.WriteLine( c1.NumberFormat.CurrencyDecimalDigits.ToString());
Console.WriteLine( c2.NumberFormat.CurrencyDecimalDigits.ToString());
Console.WriteLine( c1.TextInfo.IsRightToLeft.ToString());
Console.WriteLine( c2.TextInfo.IsRightToLeft.ToString());
Вы увидите некоторые различия:
MM/dd/yyyy
M/d/yyyy
dddd, dd MMMM yyyy
dddd, MMMM dd, yyyy
2
2
False
False
И просто подумайте, когда США потеряют костяк и решат начать использовать даты европейского стиля или перейти к метрической системе (метрическая система является инструментом дьявола! Моя машина получает сорок стержней к хогсхеду и это путь мне нравится!), InvariantCulture может просто прохладно и плавно оставаться путем он. Так что все те даты, которые вы спрятали в базе данных в текстовом виде с помощью InvariantCulture, будут продолжать работать...
-121--1491039-Насколько я знаю, вы не можете просто открыть файл txt с python и удалить строку. Вы должны сделать новый файл и переместить все, кроме этой строки в него. Если вы знаете конкретную строку, то вы бы сделали что-то подобное:
f = open('in.txt')
fo = open('out.txt','w')
ind = 1
for line in f:
if ind != linenumtoremove:
fo.write(line)
ind += 1
f.close()
fo.close()
Вы, конечно, могли бы проверить содержимое строки вместо этого, чтобы определить, хотите ли вы сохранить ее или нет.
-121--1626372-Да, для контроллера вполне приемлемо иметь ссылки на два хранилища.
На самом деле, мои контроллеры работают с несколькими репозиториями чаще, чем нет.
Это вполне нормально, но как только вы почувствуете, что контроллер становится слишком загроможденным, вы можете рефакторить его зависимости в Aggregate Service.
Необходимо добавить атрибут KnureType в базовый класс
[DataContract]
[KnownType(typeof(FileMissingError))]
public class ErrorBase {}
Дополнительные сведения об атрибуте KnureType в блоге
-121--2607795- php время
возвращает системное время. вы можете отформатировать его с date
, если хотите просто отобразить время в местное время посетителя, может быть, вам лучше использовать небольшой javascript
-121--3941879-Хотите стать умным? Не используйте репозитории внутри контроллеров. Вместо этого используйте доменные службы. Это не звучит так плохо, когда вы думаете, что один контроллер интегрирует работу многих служб, не так ли
Обычно вы создаете хранилище для корня агрегата. В хранилище будут методы, возвращающие сущности, созданные для контроллера.
Если сущности совершенно не связаны в вашей доменной модели, вы можете захотеть создать сервис, оборачивающий два отдельных хранилища для получения нужных вам данных.