EntityFramework和Model包含一个类的字段

时间:2013-02-19 19:52:09

标签: c# entity-framework postgresql ef-code-first

我有“用户”和“出价”模型。

当前在DateBase中的“用户”和“出价”表。 ("Bid" columns in postgres table

我可以映射一个“用户”字段,如下所示:

    public int UserId { get; set; }
    public virtual User User { get; set; }

但不知道如何映射具有不同名称的三个“用户”字段。

    public int CreatorId { get; set; }//id of user in db table
    public int ManagerId { get; set; }//id of user in db table
    public int ExecutorId { get; set; }//id of user in db table
    public virtual User Creator { get; set; }
    public virtual User Manager { get; set; }
    public virtual User Executor { get; set; }

我该怎么办?

public class Bid
{
    public int BidId { get; set; }

    public string Title { get; set; }
    public string Text { get; set; }

    public DateTime DateOfCreating { get; set; }
    public DateTime DateOfProcessing { get; set; }
    public DateTime DateOfExecution { get; set; }

    //here is something incorrect
    public int CreatorId { get; set; }
    public int ManagerId { get; set; }
    public int ExecutorId { get; set; }
    public virtual User Creator { get; set; }
    public virtual User Manager { get; set; }
    public virtual User Executor { get; set; }

    public bool IsProcessed { get; set; }
    public bool IsExecuted { get; set; }
    public bool IsExecutionConfirmed { get; set; }
}

1 个答案:

答案 0 :(得分:0)

我怀疑你必须告诉Entity Framework 3个属性应该用作数据库中的外键。

由于它们具有非常规名称(EF不会自动将它们识别为外键),因此可以通过在其上设置ForeignKey属性并指定它们是外键值的导航属性来帮助理解。

[ForeignKey("Creator")]
public int CreatorId { get; set; }

[ForeignKey("Manager")]
public int ManagerId { get; set; }

[ForeignKey("Executor")]
public int ExecutorId { get; set; }

public virtual User Creator { get; set; }
public virtual User Manager { get; set; }
public virtual User Executor { get; set; }