我有一个链接类的类,例如想象一个人和一条狗。在PersonDto中它是这样映射的:
public int? DogId { get; set; }
public virtual DogDto Dog { get; set; }
我的场景要大得多,但很简单,它可能看起来像这样:
var person = await _entities.Persons.Where(p => p.Name == "Ann")
.Select(p => p).Include(p => p.Dog).First();
person.Name = "Bob";
_entities.SaveChanges();
现在想象一下,安没有狗,狗应该保持空。
SQL实体框架核心执行如下插入:
DECLARE @inserted0 TABLE ([Id] int, [_Position] [int]);
MERGE [Dogs] USING (
VALUES (@p0, @p1, @p2, @p3, @p4, 0),
(@p5, @p6, @p7, @p8, @p9, 1)) AS i ([Col1], [Col2], [Col3], [Col4], [Col5],
_Position) ON 1=0
WHEN NOT MATCHED THEN
INSERT ([Col1], [Col2], [Col3], [Col4], [Col5])
VALUES (i.[Col1], i.[Col2], i.[Col3], i.[Col4], i.[Col5])
OUTPUT INSERTED.[Id], i._Position
INTO @inserted0;
我错过了什么。不会吧?足够允许它为空吗?