【问题标题】:Add method to auto generated partial class in a different file将方法添加到不同文件中自动生成的部分类
【发布时间】:2018-04-24 05:38:43
【问题描述】:

我关注这个answer

我的自动生成的文件有 dbContext 的代码:

public partial class TrafficEngineEntities : DbContext
{
    public TrafficEngineEntities()
        : base("name=TrafficEngineEntities")
    {
    }

我可以修改文件以添加带有字符串参数的附加方法:

public partial class TrafficEngineEntities : DbContext
{
    public TrafficEngineEntities()
        : base("name=TrafficEngineEntities")
    {
    }

    public TrafficEngineEntities(string connectionString)
       : base("name=TrafficEngineEntities")
    {
    }

但如果我尝试只编写部分以在单独的文件中添加附加方法(以避免在更新时覆盖),那么 Visual Studio 会说我的 db 表类不是dbcontext,就像我覆盖部分类中的所有内容一样。

public partial class TrafficEngineEntities : DbContext
{
    public TrafficEngineEntities(string connectionString)
       : base("name=TrafficEngineEntities")
    {
    }
}

【问题讨论】:

  • 两个类的名称空间是什么?它们必须相同。
  • @SergeyL 你说得对,我在 Controller 命名空间而不是 Models 命名空间下创建类。如果您提出并回答,我会接受。

标签: c# entity-framework class


【解决方案1】:

这里的问题是您手动创建的 TrafficEngineEntities 部分类和自动生成的 TrafficEngineEntities 位于不同的命名空间中。所以,实际上这是两个不同的类。

通常,您的解决方案中的命名空间与您的解决方案文件夹保持一致。自动生成的文件可能不遵守此约定,或者您可能会不小心在不同的文件夹中创建手动创建的部分类。

使您的手动类命名空间与自动生成的类相同,它应该可以解决问题。

您可以为您的文件添加后缀,例如 TrafficEngineEntities.AutoGenerated.cs 和 TrafficEngineEntities.Patrial.cs,这样您就可以清楚地看到自动生成的文件和手动编辑的文件之间的区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多