hoe*_*etz 11 .net domain-driven-design entity-framework primary-key ef-code-first
我目前正在尝试使用实体框架4.1的RC及其代码第一种方法为我的域对象实现存储库.现在我有一个域实体"Voyage",它有一个封装在"VoyageNumber"类型中的唯一标识符
public class VoyageNumber
{
private readonly string number;
public VoyageNumber(string number)
{
Validate.NotNull(number, "VoyageNumber is required");
this.number = number;
}
public string Id
{
get { return number; }
}
Run Code Online (Sandbox Code Playgroud)
现在,当我在配置DbContext时执行此操作时出现异常:
modelBuilder.Entity<Voyage>().HasKey<VoyageNumber>(k => k.VoyageNumber);
Run Code Online (Sandbox Code Playgroud)
属性'VoyageNumber'不能用作实体'Domain.Model.Voyages.Voyage'的关键属性,因为属性类型不是有效的键类型.只有标量类型,字符串和byte []是受支持的键类型.
当我尝试这个时:
modelBuilder.Entity<Voyage>().HasKey<string>(k => k.VoyageNumber.Id);
Run Code Online (Sandbox Code Playgroud)
属性表达式'k => k.VoyageNumber.Id'无效.表达式应该代表一个属性:C#:'t => t.MyProperty'
我是否真的要丢弃我的VoyageNumber并用原始类型替换它?
Lad*_*nka 14
这是限制.关键成员可以只是实体中的标量属性.复杂类型表示为不支持的复杂属性.