部分类中的自定义属性(无效的列名称)

时间:2018-06-18 18:46:19

标签: c# visual-studio asp.net-core entity-framework-core

我通过脚本创建了我的数据库,然后使用scaffold命令在visual studio中创建我的类,我为实体(User)添加了一个新的部分类,其中我添加了一些自定义属性(这不会​​出现在数据库中)每当我运行Get to this实体时,它会为我在我的分部类中设置的每个自定义属性抛出错误的无效列名。

异常消息: SqlException:无效的列名称'ResidentialName'。 列名称“UserDocumentCount”无效。 列名称“UserPaymentCount”无效。

从数据库创建的分部类。

public partial class User
    {
        public User()
        {
            UserDocument = new HashSet<UserDocument>();
            UserPayment = new HashSet<UserPayment>();
        }

        public int UserId { get; set; }
        public string UserIdentityId { get; set; }
        public int? ResidentialId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string Telephone { get; set; }
        public string Street { get; set; }
        public string Number { get; set; }
        public int Block { get; set; }
        public int Lot { get; set; }
        public bool Status { get; set; }
        public DateTime RegistrationDate { get; set; }

        public Residential Residential { get; set; }
        public AspNetUsers UserIdentity { get; set; }
        public ICollection<UserDocument> UserDocument { get; set; }
        public ICollection<UserPayment> UserPayment { get; set; }
    }

我添加的部分课程。

public partial class User
    {
        public string ResidentialName { get { return this.ResidentialId > 0 && this.Residential != null ? this.Residential.Name : String.Empty; } set { } }
        public int UserDocumentCount { get { return this.UserDocument != null ? this.UserDocument.Count : 0; } set { } }
        public int UserPaymentCount { get { return this.UserPayment != null ? this.UserPayment.Count : 0; } set { } }

        public static async Task<List<User>> GetList(KaiozamaDevContext ctx)
        {
            return await ctx.User.ToListAsync();
        }
        public static async Task<User> GetItem(KaiozamaDevContext ctx, int Id)
        {
            return await ctx.User.SingleOrDefaultAsync(m => m.UserId == Id);
        }
        public static async Task<User> GetItem(KaiozamaDevContext ctx, string Id)
        {
            return await ctx.User.SingleOrDefaultAsync(m => m.UserIdentityId == Id);
        }
    }

从上面的任何Get方法抛出错误。

问候!

更多技术细节

EF Core版本:2.1.0

数据库提供程序:Microsoft.EntityFrameworkCore.SqlServer

操作系统:Windows 10

IDE:Visual Studio Community 2017 15.4.1

1 个答案:

答案 0 :(得分:0)

将NotMapped属性添加到不在数据库中的属性中。

[NotMapped]
public string ResidentialName { get { return this.ResidentialId > 0 && this.Residential != null ? this.Residential.Name : String.Empty; } set { } }
[NotMapped]
public int UserDocumentCount { get { return this.UserDocument != null ? this.UserDocument.Count : 0; } set { } }
[NotMapped]
public int UserPaymentCount { get { return this.UserPayment != null ? this.UserPayment.Count : 0; } set { } }