实体框架代码第一集映射

本文关键字:映射 第一集 代码 框架 实体 | 更新日期: 2023-09-27 17:58:20

实体框架代码首先设置了错误的映射。映射问题如下:

一个用户可能有一个配置文件

配置文件必须具有一个或多个固定数据值

常备数据值在3/4个不同的表中使用,不能更改,例如不能向该表添加新列。

它想要做的映射看起来像:

    public override void Up()
    {
        AddColumn("dbo.StandingDatas", "Person_Id", c => c.Int());
        CreateIndex("dbo.StandingDatas", "Person_Id");
        AddForeignKey("dbo.StandingDatas", "Person_Id", "dbo.People", "Id");
    }

由于我希望映射位于People表中,因此DA更容易控制和报告。

我如何告诉enity框架将我的一对多关系放在People表上,而不是放在常备数据表上?

如果我把它改成一对一的人到站数据,效果会更好。

   public override void Up()
    {
        AddColumn("dbo.People", "Therapies_Id", c => c.Int(nullable: false));
        CreateIndex("dbo.People", "Therapies_Id");
        AddForeignKey("dbo.People", "Therapies_Id", "dbo.StandingDatas", "Id", cascadeDelete: true);
    }

如果不是一对多的话,我更喜欢这样的。

例如,人员表中ID的命令序列列表或更好的

感谢

实体框架代码第一集映射

您的模式不是很清楚,所以偏离了第一段中的描述。您的poco可能有以下注释:

public class User
{
    [Key,ForeignKey("Profile")]
    public int Id { get; set; }
    public Profile Profile { get; set; }
}
public class Profile
{
    [Key]
    public int Id { get; set; }
    public virtual User ProfileOwner { get; set; }
    public virtual ICollection<StandingData> DataCollection { get; set; } 
}
public class StandingData
{
    [Key]
    public int Id { get; set; }
    public int ProfileId { get; set; }
    [ForeignKey("ProfileId")]
    public virtual Profile Profile { get; set; }
}