我有两节课:
SELECT dbo.J_TRIM(Supplier) as Supplier
FROM Supplier_List ;
和
class Sub
{
public Guid Id { get; set; }
public DateTime ValidDate { get; set; }
public Guid MasterId { get; set; }
public Master Master { get; set; }
}
简单来说,主人有一个主子来定义它,并且可以有0或更多" secondary"潜艇。 我试图以这种方式进行映射
class Master
{
public Guid Id { get; set; }
public int Data { get; set; }
public ICollection<Sub> Subs { get; set; }
public Sub MainSub { get; set; }
}
但是我有一个例外(&#34; Master不能参与两个关系&#34;)。我不想改变我的模型,因为它符合我的需要,我怎样才能执行这样的映射呢?
答案 0 :(得分:1)
您无法映射此关系。每个关系都有2个端点,类中的一个复杂属性不能是2个关系的端点。
我会在 bool? IsMainSub
类中创建 Sub
属性,并为 {{1}创建一个唯一的键约束 MasterId
类中的和 IsMainSub
。这将确保Sub
记录不能包含2个主Master
条记录。
更新 - 我知道这看起来并不完美,Sub
属性只允许值IsMainSub
和true
,因为设置值{{ 1}}将触发唯一约束违规。这是您可以添加到属性设置器以获取任何null
值并将其转换为null的逻辑。
我可以回忆一下,您可以创建一个唯一的键约束,允许某些列的false
值而不违反约束。我会仔细检查一下。