【发布时间】:2013-07-29 13:04:23
【问题描述】:
我想知道我正在尝试做的事情是否可以使用实体框架 (5)。 简单来说,我有 2 个类
public class Value
{
public int Id {get; set;}
public int Content {get; set;}
public virtual ICollection<Constraint> Constraints {get; set;}
}
public class Constraint
{
public int Id {get; set;}
public string Name {get; set;}
public string Type {get; set;}
}
在我的业务逻辑中,如果这对(名称,类型)相似,我会考虑两个相似的约束。 在代码中的某处,我将约束与值相关联,例如:
Value v1 = new Value() { Content = 42 };
Constraint c1 = new Constraint() {Name = "A", Type = "B" };
v1.Constraints.Add(c1);
Value v2 = new Value() { Content = 43 };
Constraint c2 = new Constraint() {Name = "A", Type = "B" };
v2.Constraints.Add(c2);
然后,我有负责在数据库中插入值的持久层的另一部分:
ValueRepository.Insert(v1);
ValueRepository.Insert(v2);
对夫妇(名称,类型)的“约束”表具有唯一约束,我想避免在插入 c2 时出现插入错误。 如何告诉 EF 将 c2 视为与 c1 相同?
PS:我不能使用约束存储库来实例化约束实体。
【问题讨论】:
-
在将数据插入数据库时给出Id的值。
-
Constraint 还有哪些其他属性会导致存在多个具有相同键值的对象?当有两个具有相同键的约束时,您打算做什么 - 通知用户并要求他们更改输入,或者抛出不同的异常而不是唯一键冲突?或者你想删除除一个以外的所有欺骗?
-
我不想在我正在尝试做的数据库表中保留相同约束的重复项。除此之外,插入后我希望 c1 指向 v1 和 v2 值,而不仅仅是 v1。
标签: c# .net entity-framework-5