Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在EF 4.3中使用AddOrUpdate和复杂键为数据设定种子_C#_Entity Framework 4.3_Seed_Linq Expressions_Entity Framework Migrations - Fatal编程技术网

C# 如何在EF 4.3中使用AddOrUpdate和复杂键为数据设定种子

C# 如何在EF 4.3中使用AddOrUpdate和复杂键为数据设定种子,c#,entity-framework-4.3,seed,linq-expressions,entity-framework-migrations,C#,Entity Framework 4.3,Seed,Linq Expressions,Entity Framework Migrations,我正试图用一些测试数据来建立一个开发数据库 我使用了context.People.AddOrUpdate(p=>p.Id,People))非常成功 我有另一个表需要种子,在其中我不知道主键 例如,我想根据名字和姓氏匹配添加或更新 我不知道如何正确地写出这个表达式 context.People.AddOrUpdate(p => p.FirstName && p.LastName, people); 显然是不正确的,但我希望它传达了我正在寻找的解决方案。尝试以下方法: con

我正试图用一些测试数据来建立一个开发数据库

我使用了
context.People.AddOrUpdate(p=>p.Id,People))非常成功

我有另一个表需要种子,在其中我不知道主键

例如,我想根据名字和姓氏匹配添加或更新

我不知道如何正确地写出这个表达式

context.People.AddOrUpdate(p => p.FirstName && p.LastName, people);
显然是不正确的,但我希望它传达了我正在寻找的解决方案。

尝试以下方法:

context.People.AddOrUpdate(p => new { p.FirstName, p.LastName }, people);

如果您获得了<代码>,仅在此上下文中支持原始类型或枚举类型。由于使用导航属性-考虑将外键属性直接添加到实体(可能仅使用吸气剂)并按照Ladislav Mrnka的建议使用它。

@LadislavMrnka如果标识符需要是复杂类型,即
context.People.AddOrUpdate(p=>new{p.Name.FirstName,p.Name.LastName},People)
?@LadislavMrnka,同样,如果属性是可为null的类型,该怎么办?i、 e.
context.People.AddOrUpdate(p=>new{p.Birthdate},People)
?这里需要注意的是,“People”集合需要是一个数组而不是一个列表。如果您有一个实体列表,只需在列表上调用.ToArray()。我挣扎着回答这个问题:)-好的回答不能让这个起作用。可能是因为(除了复合键中指定的3个属性外)我还有一个自动生成数字的ID字段?@LadislavMrnka在迁移和更新数据库字段后需要保留迁移文件夹(Configuration.cs和…)?如何在
code first
方法中添加其他表外键的导航属性?我的结构类似于
context.People.AddOrUpdate(p=>new{p.Name.FirstName,p.Name.LastName},People)
?如果我设置getter属性错误为
,则可能在LINQ to实体中不支持指定的类型成员“NameId”。仅支持初始值设定项、实体成员和实体导航属性。