此问题与我的Original Question相关。
我得到它的工作很好,但几秒钟之前,我注意到它不是我预期的100%。
public class EntryHardware{
[Key]
[Column(Order=0)]
public int Id {get; set;}
[Key]
[Column(Order=1)]
public int EntryId {get; set;}
[Key]
[Column(Order=2)]
public int HardwareId {get; set;}
public AdditionalProperty Foo {get; set;}
public virtual Entry ...
public virtual Hardware ...
}
使用此方法,条目可以包含n 不同的硬件,但添加相同的硬件两次将导致不唯一的Id-Set。
为了解决这个问题,我在EntryHardware模型中添加了一个新的唯一属性:
public class EntryHardware{
[Key]
[Column(Order=0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id {get; set;}
[Key]
[Column(Order=1)]
public int EntryId {get; set;}
[Key]
[Column(Order=2)]
public int HardwareId {get; set;}
public AdditionalProperty Foo {get; set;}
public virtual Entry ...
public virtual Hardware ...
}
不幸的是,Id Property不会通过DB自动设置。寻找答案我找到了一个应该解决这个问题的属性:
//This one gets the image from the first product in the product category category:
$catimg = get_the_post_thumbnail( $product->id, 'thumbnail' );
//This code contains custom text that also reads info from various variables, including the `$catimg` variable:
$cat_art1 = '<h1>'.$variable1.' This is some text that will be outputted to my site.</h1>
Here i want to screen the image <img src="' . $catimg . '" alt="alt">
Some more text and another '.$variable.' to end the line';
但是使用这个我的代码在将实体保存到数据库时会抛出异常:
存储更新,插入或删除语句会影响意外的行数(0)。自实体加载以来,实体可能已被修改或删除。
但我无法弄清问题在哪里......
答案 0 :(得分:1)
[通过评论推广]
停下来退后一步......你想要实现什么目标?
为什么不给连接表提供自己的(无意义的)ID,使硬件/条目ID为外键并在一天内调用它?
请记住,仅在用于标识该特定表中的记录的字段(表的主键)上才需要Key属性。在多个字段上使用该属性可创建一个复合键(这是您的唯一约束来源)。