================问题================
首先,我正在使用Entity框架(代码优先)。我有以下课程:
public class RandomObject
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity), Column(Order = 1)]
public int Id { get; protected set; }
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity), Column(Order = 2)]
public Guid UniqueId { get; protected set; }
public string Other { get; set; }
}
我还有一个migration-folder(包),我用一些对象为数据库设定种子。
private void AddDefaultObjects(Context context)
{
var object1 = new RandomObject{ Other = "qsdf1" };
var object2 = new RandomObject{ Other = "qsdf2" };
var object3 = new RandomObject{ Other = "qsdf3" };
var objects = new RandomObject[3]{object1 , object2 , object3 };
context.RandomObjects.AddOrUpdate(object => object.Id, objects);
context.SaveChanges();
}
但是当我添加对象时,它们都得到相同的UniqueId => NOK(但不同的Id => OK)
================尝试================
我尝试添加属性
[Index(IsUnique = true)]
或设置(在我的迁移配置文件中)
column.DefaultValueSql = "newid()";
================结果================
Id | UniqueId
--------------------------------------------
19 | db1e353e-7dd7-e311-8250-8c89a5c20da1
20 | dc1e353e-7dd7-e311-8250-8c89a5c20da1
21 | dd1e353e-7dd7-e311-8250-8c89a5c20da1
答案 0 :(得分:1)
试试这个....我认为你的AddOrUpdate
在第一个参数中需要复合主键的两个部分:
context.RandomObjects.AddOrUpdate(object =>
new { object.Id, object.UniqueId },
objects);