2016-08-18 177 views
0

例如,我有这样简单的模型:删除实体之间的关系,实体框架的核心

var address = _dbContext.Addresses.Add(new Address() 
{ 
    AddressId = Guid.NewGuid().ToString(), 
    StreetName = "Test street name" 
}).Entity; 
_dbContext.Libraries.Add(new Library() 
{ 
    LibraryId = Guid.NewGuid().ToString(), 
    Name = "Test library", 
    Address = address 
}); 

但是,我怎么能打破它们之间的关系?如果我只是想在数据库中保留测试库和测试地址,但是打破它们之间的关系,我想测试库的外键必须为空。我怎样才能做到这一点?

回答

0

您的实体模型必须在外键列上可以为空。

public class Library 
{ 
    ... 
    public Guid? AddressId{get;set;} 
    public virtual Address Address {get;set;} 
} 

然后你可以设置地址为空。否则这是不可能的我认为

+0

我没有明确地设置AddressId _null_,我将导航属性Address设置为null,这显然是可以为空的。 –

+0

这将不起作用,因为entity-framework像加入语句一样从GUID列的主键获取引用对象。 –

+0

地址只是虚拟的,不会保存在您的数据库中。 AddressId列被保存。 如果你只想得到null,如果你问关系,只要写这样的东西(我知道它不是完全正确的语法) '公共虚拟地址地址{获得{返回null;};集{地址=值}} ' –