实体框架代码优先中的自定义主键相关实体ID属性

时间:2014-12-11 15:39:14

标签: c# entity-framework

我创建了一个类:

public class Client
{
    public long AccountNumber {get;set;}
    // ...
}

我正在使用非默认(Id)主键:

modelBuilder.Entity<Client>().HasKey(x => x.AccountNumber);

我有一个与Client

有关系的实体
public class Something
{
    public Client Client {get;set;}
}

我想添加包含外键值的属性 - ClientAccountNumber

使用默认的PK(Id,f.e。Client.Id),这是开箱即用的:

public class Client 
{
    public long Id {get;set;}
}

public class Something
{
    public Client Client {get;set;}
    public long ClientId {get;set;}
}

使用自定义PK时,这不起作用:

public class Something
{
    public Client Client {get;set;}
    public long ClientAccountNumber {get;set;} // some kind of convention? 
                                               //or explicit configuration?
}

该物业的名称应该是什么,因此EF可以发现这只是FK? 是否有某种命名惯例?

1 个答案:

答案 0 :(得分:1)

您可以像创建PK一样为外键关系创建映射。

目前还不清楚你想要什么样的关系,但假设有多对一的关系:

modelBuilder.Entity<Something>()
.HasRequired(x => x.Client)
.WithMany()
.HasForeignKey(x => x.ClientId);