我有一段关系,我不确定如何定义,我对SQL很陌生,所以我可能错了。
我有Account
,如下所示:
public class Account
{
public int Id { get; set; }
public string Username { get; set; }
public LiveCurrencyInfo CurrencyInfo { get; set; }
}
LiveCurrencyInfo:
public class LiveCurrencyInfo
{
public int Id { get; set; }
public decimal USD { get; set; }
}
Account
需要指向单个LiveCurrencyInfo
实体的链接。
LiveCurrencyInfo
作为一个完全独立的实体存在,并不依赖于任何其他内容 - 正如它所定义的那样。
这是一个1..0的关系吗?
我尝试像这样定义它,但语法错误:
protected override void OnModelCreating(DbModelBuilder mb)
{
mb.Entity<Account>()
.HasRequired(l => l.CurrencyInfo)
.Map(m => //Can't call .Map here
{
m.MapLeftKey("AccountId");
m.MapRightKey("LiveCurrencyInfoId");
m.ToTable("UserAccountLiveCurrencyMapping");
});
}
修改的
我认为这些表格如下所示:
Accounts LiveCurrencyInfo UserAccountLiveCurrencyMapping
Id | Username Id | USD AccountId | LiveCurrencyInfoId
---+--------- ---+------ ----------+-------------------
20 | User_1 39 | 1.0 20 | 39
答案 0 :(得分:2)
这是一个1..0的关系吗?
首先,您需要定义关系结束(从 - &gt;到)。但不,根本就没有这种关系。
根据您的解释,LiveCurrencyInfo
与Account
之间的关系为1 -> 0..1
。因此,EF条款LiveCurrencyInfo
是主要结束,Account
是依赖结束。由于据我所知,两个实体都应该有独立的PK,因此Account
需要FK列引用LiveCurrencyInfo
PK。
流畅的设置如下(为了使Map
和其他关系流畅的API可用,您首先需要使用相应的HasXyz
完成WithXyz
开始的关系结束定义):
mb.Entity<Account>()
.HasRequired(e => e.CurrencyInfo)
.WithOptional()
.Map(m => m.MapKey("LiveCurrencyInfoId"));