如何使用EF 4.3中的复杂密钥使用AddOrUpdate对数据进行种子设定

Kei*_*ons 101 c# seed linq-expressions ef-migrations entity-framework-4.3

我正在尝试使用一些测试数据来开发数据库.

context.People.AddOrUpdate(p => p.Id, people));用得很成功了.

我有另一个我需要播种的表,其中我不知道主键.

例如,我想基于First和Last名称匹配AddOrUpdate.

我不确定如何正确编写表达式.

context.People.AddOrUpdate(p => p.FirstName && p.LastName, people);
Run Code Online (Sandbox Code Playgroud)

显然不正确,但我希望它能传达我正在寻找的解决方案.

Lad*_*nka 199

试试这个:

context.People.AddOrUpdate(p => new { p.FirstName, p.LastName }, people);
Run Code Online (Sandbox Code Playgroud)

  • @LadislavMrnka如果标识符需要是一个复杂的类型,即`context.People.AddOrUpdate(p => new {p.Name.FirstName,p.Name.LastName},people)`? (11认同)
  • @LadislavMrnka,如果该属性是可以为空的类型怎么办?即`context.People.AddOrUpdate(p => new {p.Birthdate},people)`? (3认同)
  • 这里要注意的是'人'系列需要是ARRAY而不是列表.如果您有实体列表,则只需在列表中调用.ToArray()即可.我挣扎着那个:) - 很好的答案 (2认同)