Я занимаюсь созданием модели домена и хотел бы иметь класс BaseEntity с свойством «Id» (и некоторыми другими материалами отслеживания аудита). Свойство Id - это первичный ключ, и каждый объект Entity в моей модели домена наследует класс BaseEntity. Довольно простая вещь .....Измените имя столбца Identity Column для всех объектов
public class BaseEntity
{
[Key]
public int Id { get; set; }
public DateTime LastUpdate { get; set; }
public string LastUpdateBy { get; set; }
}
public class Location : BaseEntity
{
[Required]
public string Name { get; set; }
public string Description { get; set; }
}
Используя пример выше, я хотел бы, чтобы отобразить поле «Id» в колонку «LocationId». Я понимаю, что я могу использовать MODELBUILDER сделать это для каждого объекта в явном виде, делая что-то вроде этого:
modelBuilder.Entity<Location>().Property(s => s.Id).HasColumnName("LocationId");
Но я хотел бы сделать это для каждого объекта в моей модели домена, и это было бы некрасиво.
Я пробовал следующую битку отражения, но мне не повезло. По какой причине, компилятор «не может разрешить тип символа»:
foreach (var type in GetTypesInNamespace(Assembly.Load("Domain.Model"),"Domain.Model"))
{
modelBuilder.Entity<type>().Property(x=>x.Id).....
}
Есть ли способ определить соглашение переопределения PrimaryKey по умолчанию соглашения о к карте моей собственности «Id» в собственность «ClassNameId» в базе данных ? Я использую Entity Framework 6.
Есть ли причина, по которой вам необходимо использовать EF6 (который все еще находится в Alpha), а не EF5? – gunr2171
Нет особых причин, нет. Это всего лишь новый проект, и я экспериментирую с EF6. Можете ли вы сделать то, что я пытаюсь сделать в EF5? – lafferrs
Я бы предложил использовать EF5, потому что он стабильный. Однако вы должны прочитать [эту страницу] (http://entityframework.codeplex.com/wikipage?title=specs), чтобы убедиться, что то, что вы пытаетесь сделать, выполняется только EF6. – gunr2171