如何在EF 4.1代码中首先映射父列 [英] How to map parent column in EF 4.1 code first

查看:114
本文介绍了如何在EF 4.1代码中首先映射父列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  public class Login 
{
public Guid Id {get;组; }
public Login CreatedBy {get;组;
}

我使用流动配置如下:

  modelBuilder.Entity< Login>()
.HasKey(x => x.Id)
.ToTable(登录 );

modelBuilder.Entity< Login>()
.HasOptional(x => x.CreatedBy)
.WithMany()
.HasForeignKey(x => x.CreatedBy);

我的代码在存储库中获取所有登录数据如下:

 从D返回Db.Logins.Include(CreatedBy)
select d;

当我执行代码时,我收到以下错误:



外键组件CreatedBy不是Login类型上声明的属性。验证它没有被明确排除在模型中,并且它是一个有效的原始属性。



任何人都可以建议我在这里做错什么? / p>

提前感谢

解决方案


。 。没有被明确排除在模型之外,并且它是一个
有效的原始属性


您的外键映射 .HasForeignKey(x => x.CreatedBy)不使用原始属性。

  public class Login 
{
public Guid Id {get;组; }
public virtual Login CreatedBy {get;组;
}

然后将其映射为

  modelBuilder.Entity< Login>()
.HasKey(x => x.Id)
.ToTable(Login);

modelBuilder.Entity< Login>()
.HasOptional(x => x.CreatedBy)
.WithMany()
.Map(x => x.MapKey( ForeignKeyColumn));


In my project I have following DomainModel.

public class Login
{
    public Guid Id { get; set; }
    public Login CreatedBy {get; set; }
}

I am using fluent configuration as below:

modelBuilder.Entity<Login>()
            .HasKey(x => x.Id)
            .ToTable("Login");

modelBuilder.Entity<Login>()
            .HasOptional(x => x.CreatedBy)
            .WithMany()
            .HasForeignKey(x => x.CreatedBy);

My code in repository to get all Logins data is as below:

return from d in Db.Logins.Include("CreatedBy") 
       select d;

When I execute the code I am getting following error:

The foreign key component 'CreatedBy' is not a declared property on type 'Login'. Verify that it has not been explicitly excluded from the model and that it is a valid primitive property.

Can anyone suggest what I am doing wrong here?

Thanks in advance

解决方案

.. has not been explicitly excluded from the model and that it is a valid primitive property

Your foreign key mapping .HasForeignKey(x => x.CreatedBy) does not use a primitive property.

public class Login
{
    public Guid Id { get; set; }
    public virtual Login CreatedBy {get; set; }
}

Then map it like

modelBuilder.Entity<Login>()
            .HasKey(x => x.Id)
            .ToTable("Login");

modelBuilder.Entity<Login>()
            .HasOptional(x => x.CreatedBy)
            .WithMany()
            .Map(x => x.MapKey("ForeignKeyColumn"));

这篇关于如何在EF 4.1代码中首先映射父列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆