C# 首先使用代码的自定义CRUD存储过程

C# 首先使用代码的自定义CRUD存储过程,c#,sql-server,entity-framework,ef-code-first,C#,Sql Server,Entity Framework,Ef Code First,我在一个新项目中使用了EF6代码优先的方法,这非常好,但现在我在如何定制CRUD存储过程方面有点困难,以便在数据库中计算一些列 过程(摘要): 过程A: public class ProcessA: Process { public int A {get; set} } 过程B: public class ProcessB: Process { public int B {get; set} } 以上面的3个类为例,我如何首先在EF6代码中定制生成的存储过程,以便它可以例如:

我在一个新项目中使用了EF6代码优先的方法,这非常好,但现在我在如何定制CRUD存储过程方面有点困难,以便在数据库中计算一些列

过程(摘要):

过程A:

public class ProcessA: Process
{
    public int A {get; set}
}
过程B:

public class ProcessB: Process
{
    public int B {get; set}
}
以上面的3个类为例,我如何首先在EF6代码中定制生成的存储过程,以便它可以例如:

  • 插入
    Process
    时,将
    Id
    设置为
    count(*)+1
    CreateDate=GETUTCTIME()
  • 更新
    ProcessContact
    时,在
    Process
    表中设置
    UpdateDate=GETUTCTIME()

过程代码是高度特定于供应商的-因此请添加一个标记,以指定您使用的是
mysql
postgresql
sql server
oracle
db2
,还是完全其他的。为什么要在DB中这样做?然后回到特定的产品代码。因为它是代码优先,所以我在代码中管理它。我不确定您是否可以修改生成的存储过程,非常确定您可以。如果没有,就复制它,然后修改它。然后EF可以选择映射到现有存储过程。我甚至不知道你为什么要使用存储过程(有时使用存储过程是有意义的)。你知道关键属性和保存/更新时的值注入吗?谢谢大家的反馈。我已经添加了标签。关于使用标识的密钥,在我的例子中,我希望它们是连续的(标识不能保证这一点),在另一个例子中,我没有把它放在这里,它必须被计算出来。关于日期时间的问题,它建议使用服务器日期时间而不是桌面。我不怀疑你的专业知识,但老实说,我不明白在数据库中设置一些值有什么问题。我知道更改数据库会导致我重写存储过程。
public class ProcessA: Process
{
    public int A {get; set}
}
public class ProcessB: Process
{
    public int B {get; set}
}