我有两个类似的
public partial class Master
{
[Key, Column(Order = 0)]
public int idmaster { get; set; }
/*More fields*/
}
public partial class Detail
{
[Key, Column(Order = 0)]
public int idmaster { get; set; }
[Key, Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int id { get; set; }
}
我想以这种方式自动增加ID:
|----------|-----------|
|MasterID | ID |
------------------------
| 1| 1|
| 1| 2|
| 1| 3|
| 1| 4|
| 2| 1|
| 2| 2|
| 2| 3|
| 2| 4|
------------------------
我如何在Entity Framework中执行此操作
非常感谢你的帮助
编辑:其实我有这个,但我只想要增加ID,如我所说:
|----------|-----------|
|MasterID | ID |
------------------------
| 1| 1|
| 1| 2|
| 1| 3|
| 1| 4|
| 2| 5|
| 2| 6|
| 2| 7|
| 2| 8|
------------------------
我知道我可以通过代码完成,但我想知道是否还有其他方法可以做到。
答案 0 :(得分:1)
如果可以,请在数据库中使用触发器。
-- TSQL in SQL Server 2008+
CREATE TRIGGER tr_Detail_autoidentity ON Detail
INSTEAD OF
INSERT
AS
BEGIN
INSERT INTO Detail(idmaster, id)
SELECT inserted.idmaster, isnull((SELECT max(id) FROM Detail WHERE idmaster = inserted.idmaster), 0) + ROW_NUMBER() OVER (PARTITION BY idmaster ORDER BY id)
FROM inserted
END
--I Love this one, it work for multiline insert. May need a lock for multiuser, I'm not sure.