gpt4 book ai didi

c# - 复合键 Entity Framework 中的自动增量 ID

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:03 25 4
gpt4 key购买 nike

我有两个这样的类

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|
------------------------

我知道我可以通过代码来完成,但我想知道是否有其他方法可以做到这一点。

最佳答案

如果可以,请在数据库中使用触发器。

-- 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.

关于c# - 复合键 Entity Framework 中的自动增量 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30761376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com