c#自动生成的分部类重定义属性get set

c#自动生成的分部类重定义属性get set,c#,asp.net-mvc,entity-framework,partial-classes,C#,Asp.net Mvc,Entity Framework,Partial Classes,我正在从传统的asp转到.NET。所以这可能是个愚蠢的问题,但我找不到答案 我有一个使用数据库优先和实体框架的MVC应用程序。现在我想给自动生成的“partial”类添加一些逻辑。从我所读到的内容来看,应该是创建一个具有相同名称空间和名称的新分部类。但当我这样做时,我会得到一个错误“(这个成员被定义了不止一次)”和“在[partial class]和[partial class]之间的歧义”。我理解错误的意思,但我不确定如何解决问题 我想给这一套增加一些逻辑性;存取器 所以在生成的类中,我有 p

我正在从传统的asp转到.NET。所以这可能是个愚蠢的问题,但我找不到答案

我有一个使用数据库优先和实体框架的MVC应用程序。现在我想给自动生成的“partial”类添加一些逻辑。从我所读到的内容来看,应该是创建一个具有相同名称空间和名称的新分部类。但当我这样做时,我会得到一个错误“(这个成员被定义了不止一次)”和“在[partial class]和[partial class]之间的歧义”。我理解错误的意思,但我不确定如何解决问题

我想给这一套增加一些逻辑性;存取器

所以在生成的类中,我有

public partial class QualityChecks
{
.....
    public int DailyCount { get; set; }
...
}
在我的新分部类中,我想添加到集合代码中,以确保只添加大于0的值。如果添加了负值,则需要记录该值并将其更改为0 e、 g.我的新部分课程是:

public partial class QualityChecks    {
public int DailyCount         {        
set
        {
            DailyCount = value;
            if it's < 0 log and set to 0
        }

    }
与其到处更新该逻辑,不如将其封装在QualityChecks类中

这样做对吗?如果是这样的话,我需要做什么改变才能让这一切顺利进行


提前感谢您提供的任何提示和帮助

不能在两个不同的文件中定义相同的成员

您可以尝试定义一个新的包装器属性(例如MyDailCount),该属性添加额外的逻辑,并在最后更新底层DailCount,以便将其持久化到数据库中

public int MyDailyCount 
{
   get { return DailyCount; }
   set 
   { 
         DailyCount = value; 
         // your extra logic 
    }
}

因此,在我的代码重播中,qc.DailyCount=enteredAmount;需要更改为qc.MyDailyCount=enteredAmount?对其他选项是将映射到数据库的属性的名称更改为(例如DbDailyCount),并使用DailyCount作为包装器属性的名称。您还可以考虑将用于数据库实体的类与模型中的实体(具有逻辑的实体)解耦,并从一个实体转换到另一个实体。我想要做的唯一额外更改是将自动生成的属性设置为私有。有没有一种方法可以永久设置,或者每次更新模型时都必须进行更改?不确定。理想情况下,您不希望在自动生成的属性上执行此类操作,您希望它们至少是受保护的虚拟属性,以便EF可以在它们上执行他的魔术(延迟加载等),作为替代方案,您是否考虑过这样的想法:将这些实体类保留在存储库代码中。然后使用类似的方法在这些实体类和可以包含所需检查的其他数据类之间进行映射。那样。你可以避免部分类的问题。有趣的是,我在这个项目的其他地方使用Automapper,效果很好。我没想到会那样使用。可能是我没有经验,但是创建一个新类&映射感觉更混乱?
public int MyDailyCount 
{
   get { return DailyCount; }
   set 
   { 
         DailyCount = value; 
         // your extra logic 
    }
}