c#auto generated partial class redefine property get set

时间:2015-06-12 14:09:25

标签: c# asp.net-mvc entity-framework partial-classes

我正在从主要的经典asp转向.NET。所以这可能是一个愚蠢的问题,但我找不到答案。

我有一个使用Database First和Entity Framework的MVC应用程序。现在我想为自动生成的“部分”类添加一些逻辑。根据我的阅读,它应该是创建一个具有相同名称空间和名称的新的部分类。但是当我这样做时,我得到一个错误“(这个成员被定义不止一次)”和“[partial class]和[partial class]之间的歧义”。我理解错误说的是什么,但我不确定如何解决问题。

我想在集合中添加一些逻辑;存取器。

所以在生成的类中我有

public partial class QualityChecks
{
.....
    public int DailyCount { get; set; }
...
}

在我的新的部分类中,我想添加到设置代码中以确保只添加大于0的值。如果添加负值,则需要记录并更改为0 例如我新的部分课程是:

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

    }

如果不清楚这可能会有所帮助: 目前我有很多代码只是

QualityChecks qc = new QualityChecks();
qc.DailyCount = enteredAmount;
....
db.QualityChecks.add(qc);

而不是在任何地方更新该逻辑,将它包装在QualityChecks类中会很好。

这是正确的方式吗?如果是这样,我需要改变什么才能使其发挥作用?

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

1 个答案:

答案 0 :(得分:1)

您无法在两个不同的文件中定义相同的成员。

您可以尝试定义一个新的包装器属性(例如MyDailyCount),它添加额外的逻辑并在最后更新底层的DailyCount,以便它可以持久保存到数据库。

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