在 C# 中使用属性扩展 class

extend class in c# with properties

我在我的 mvc 项目中使用 Entity framework 6(数据库优先)。数据库有一个名为 User 的 table,其中包含名称、地址、电子邮件等列。因此,在我的项目中,我的项目中自动生成了 User.cs class 。我需要使用一些属性扩展该用户 class。我应该创建它以使用此 prpoerty 扩展 class 吗?

    public partial class User
{
    public bool SomeBoolProperty { get; set; }
}

如果可以,我应该在哪里添加它?我试图将它添加到名为 partials\user.cs 的文件夹下,但是这样做时,在查看可用属性时,此 属性 不可用。

您可以有一个从用户 class 派生的子 class。

例如:

public class childClass:User
{
   public bool SomeBoolProperty { get; set; }
}

您可以像这样访问这些属性

User _user= new ChildClass();
_user.SomeBoolProperty =10;

当您在 "Partial" 文件夹中添加部分 class 时,Visual Studio 可能会将 .Partials 添加到部分 class 的命名空间添加,因为约定是名称空间应遵循文件夹路径。在这种情况下,编译器不会将自动生成的 class 与您创建的部分 class 结合起来,因为它们位于不同的命名空间中。

确保命名空间在您的部分 class 和生成的 class 中相同。

您需要确保您为手写partial class User指定的namespace 与 EF6 生成的 partial class User 完全相同e。如果两者之间的名称空间不同,那么部分 类 将不会放在一起,它们将保持分开。

在您的 User.cs 中,您可以使用属性上方的 [NotMapped] 属性添加不会映射到数据库的属性:

public class User
{
    //Your autogenerated properties

    [NotMapped]
    public bool SomeBoolProperty { get; set; }

    [NotMapped]
    public int AnotherProperty { get; set; }
}