Я очень рад, что недавно нашел этот сайт, я многому научился отсюда.
Я из Китая, и мой английский не так хорош. Но я постараюсь выразить то, что хочу сказать.Должен ли я показывать дочерние агенты как общедоступные свойства для реализации незнания Persistence?
В последнее время я начал изучать дизайн, основанный на домене, и меня это очень интересует. И я планирую создать сайт форума с использованием DDD.
После прочтения много потоков отсюда я понял, что упорство невежество - хорошая практика.
В настоящее время у меня есть два вопроса о том, что я думаю в течение длительного времени.
- Должен ли объект домена взаимодействовать с репозиторием для получения/сохранения данных?
- Если объект домена не использует репозиторий, то каким образом уровень инфраструктуры (например, единица работы) знает, какой доменный объект является новым или измененным/удаленным?
Для второго вопроса. Там пример кода: Предположим, у меня есть класс пользователей:
public class User
{
public Guid Id { get; set; }
public string UserName { get; set; }
public string NickName { get; set; }
/// <summary>
/// A Roles collection which represents the current user's owned roles.
/// But here i don't want to use the public property to expose it.
/// Instead, i use the below methods to implement.
/// </summary>
//public IList<Role> Roles { get; set; }
private List<Role> roles = new List<Role>();
public IList<Role> GetRoles()
{
return roles;
}
public void AddRole(Role role)
{
roles.Add(role);
}
public void RemoveRole(Role role)
{
roles.Remove(role);
}
}
Исходя из указанного класса User, предположим, что я получаю от пользователя IUserRepository, и добавить роль для него.
IUserRepository userRepository;
User user = userRepository.Get(Guid.NewGuid());
user.AddRole(new Role() { Name = "Administrator" });
В этом случае, я не знаю, как это хранилище или единица работы может знать, что пользователь имеет новую роль?
Я думаю, что реальная структура ORM на основе ненасилия ORM должна поддерживать POCO, и любые изменения происходят в самой POCO, основа сохранения должна знать автоматически. Даже если изменить статус объекта с помощью метода (AddRole, RemoveRole), как в приведенном выше примере.
Я знаю, что много ORM может автоматически сохранять постоянные изменения, если я использую свойство Роли, но иногда мне это не нравится из-за причины производительности.
Может ли кто-нибудь дать мне некоторые идеи для этого? Благодарю.
Это мой первый вопрос на этом сайте. Надеюсь, мой английский можно понять.
Любые ответы будут очень благодарны.