【发布时间】:2017-06-22 11:09:22
【问题描述】:
想不出更好的标题来解决我的问题,但情况非常简单:我有我的数据库(使用代码优先迁移创建),我有我的实体,它有两个具有索引约束的字段,所以我不能当这些字段相同时插入重复记录。
public class Entity
{
public int Id;
[Index("IndexName"), IsUnique = true, Order = 0]
[MaxLength(50)]
public string Name;
[Index("IndexName"), IsUnique = true, Order = 1]
public Guid CustomId;
}
对于一个简短的实体类示例,我做了这个(我看起来有更多的属性、getter、setter ;))
我试着做这个:
<...>
using (var ctx = new EntitiesDbContext())
{
var e1 = new Entity()
{
Name = "Bob",
CustomId = new Guid("068462F1-3557-E711-BA31-028037EC0200")
};
var e2 = new Entity()
{
Name = "Bob",
CustomId = new Guid("068462F1-3557-E711-BA31-028037EC0200")
};
ctx.Entities.Add(e1);
ctx.Entities.Add(e2);
await ctx.SaveChangesAsync(); // I get exception
}
<...>
一切都很好,因为索引,我无法插入两条记录,但我的问题是,它根本没有插入任何值。是否有可能制造这种情况,向 DB(即 e1 对象)添加至少一个值?
附:问题来自更复杂的情况,我的示例非常明显或愚蠢,但它显示了我想要实现的想法。问题是我猜的系统性能问题,当两条记录被插入到上下文中,然后当我在上下文中尝试保存它时,我得到了一个异常。
【问题讨论】:
标签: c# frameworks constraints entity unique