在我的项目中,我有以下DomainModel。
public class Login
{
public Guid Id { get; set; }
public Login CreatedBy {get; set; }
}
我使用流畅的配置如下:
modelBuilder.Entity<Login>()
.HasKey(x => x.Id)
.ToTable("Login");
modelBuilder.Entity<Login>()
.HasOptional(x => x.CreatedBy)
.WithMany()
.HasForeignKey(x => x.CreatedBy);
我在存储库中获取所有登录数据的代码如下:
return from d in Db.Logins.Include("CreatedBy")
select d;
当我执行代码时,我收到以下错误:
外键组件“CreatedBy”不是“Login”类型的声明属性。验证它是否未从模型中明确排除,并且它是有效的基本属性。
有人能说出我在这里做错了什么吗?
提前致谢
答案 0 :(得分:5)
..尚未明确排除在模型之外,并且它是一个 有效的原始属性
您的外键映射.HasForeignKey(x => x.CreatedBy)
不使用原始属性。
public class Login
{
public Guid Id { get; set; }
public virtual Login CreatedBy {get; set; }
}
然后将其映射为
modelBuilder.Entity<Login>()
.HasKey(x => x.Id)
.ToTable("Login");
modelBuilder.Entity<Login>()
.HasOptional(x => x.CreatedBy)
.WithMany()
.Map(x => x.MapKey("ForeignKeyColumn"));