gpt4 book ai didi

c# - 创建新数据库条目时违反命令查询分离

转载 作者:行者123 更新时间:2023-11-30 15:30:54 26 4
gpt4 key购买 nike

我有一个方法可以在数据库中创建一些条目并返回它的 Id。我想以某种方式将这两者分开,因为它违反了命令-查询分离。
例如方法(简化):

int CreatePost(database::Post newPost)
{
using(var db = new database::MainModelContainer())
{
db.Posts.Add(newPost);
db.SaveChanges();
return newPost.Id;
}
}

我知道有使用 refout 的解决方法,但我认为这些解决方案不干净。我想要具有以下签名的命令。

void CreatePost(database::Post newPost)

有什么办法可以做到这一点吗?
笔记:我需要在创建新条目后立即知道它的Id是什么。

最佳答案

保存实体后, Entity Framework 使用适当的值填充 Id 属性。所以如果你有一个实体:

public class Post
{
public int Id { get; set; } // primary key
...
}

保存方法:

public void SavePost(Post post)
{
using (var db = new YourDatabase())
{
db.Posts.Add(post);
db.SaveChanges();
}
}

您可以从客户端代码执行此操作以获取 id:

var myPost = new Post();
Console.Writeline(myPost.Id); // displays 0
SavePost(myPost);
Console.Writeline(myPost.Id); // displays the new id

关于c# - 创建新数据库条目时违反命令查询分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470419/

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