我目前正在尝试使用实体框架4.1及其代码第一种方法的RC实现我的域对象的存储库。 现在我有一个域实体“远航”具有封装在类型的唯一标识符“VoyageNumber”EF4.1代码第一个复杂类型作为主键
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; }
}
现在,我得到一个异常时,我这样做,我的DbContext的配置:
modelBuilder.Entity<Voyage>().HasKey<VoyageNumber>(k => k.VoyageNumber);
属性“VoyageNumber”不能 用作密钥属性的实体 “Domain.Model.Voyages.Voyage”,因为 属性类型是不是一个有效关键 类型。仅支持标量类型,字符串和 byte []是支持的键类型。
并且当我尝试:
modelBuilder.Entity<Voyage>().HasKey<string>(k => k.VoyageNumber.Id);
属性表达数k => k.VoyageNumber.Id'无效。该 表达式应该代表 属性:C#:“T => t.MyProperty”
我真的有垃圾我VoyageNumber并用原始类型更换呢?
当使用此什么是异常消息:
在存储库modelBuilder.Entity().HasKey (K = > k.VoyageNumber); –
tpeczek
2011-04-02 11:05:34
用异常消息更新了问题。 – hoetz 2011-04-02 11:16:37
EF中仍然存在这样的情况6.1.3 – 2016-04-08 10:35:47