【问题标题】:EF Core modelbuilder not a valid expression fluent apiEF Core 模型构建器不是有效的表达式流利的 api
【发布时间】:2019-01-24 09:12:25
【问题描述】:

当我尝试在包管理器中执行命令 add-migration 时,出现以下错误。

表达式“a => a.Customer”不是有效的属性表达式。该表达式应该表示一个简单的属性访问:'t => t.MyProperty'。

这是类图的图像

以及我在其中定义表之间关系的 BankContext.cs 类的代码

namespace Bank.Datalayer
{
    public class BankContext : DbContext
    {
        public DbSet<Account> Accounts { get; set; }
        public DbSet<City> Cities { get; set; }
        public DbSet<Customer> Customers { get; set; }
        // TODO: Vul deze klasse aan
        public BankContext() { }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server = (localdb)\\mssqllocaldb; Database =  BankDB; Trusted_Connection = true");
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        //Primary key
        modelBuilder.Entity<City>()
            .HasKey(c => c.ZipCode);
        modelBuilder.Entity<Account>()
            .HasKey(a => a.Id);
        modelBuilder.Entity<Customer>()
            .HasKey(c => c.CustomerId);

        //Foreign Keys
        modelBuilder.Entity<Account>()
            .HasOne(a => a.Customer)
            .WithMany(c => c.Accounts)
            .HasForeignKey(c => c.CustomerId);


        modelBuilder.Entity<City>()
            .HasMany(c => c.Customers)
            .WithOne(customer => customer.City)
            .HasForeignKey(c => c.Name);

        base.OnModelCreating(modelBuilder);
    }

    public void CreateOrUpdateDatabase()
    {
        Database.Migrate();
    }
}

最后但并非最不重要的一点是我的 Account 类的代码,其中所有的问题都发生了

namespace Bank.DomainClasses
{
    public class Account
    {
        // TODO: vul deze klasse aan
        public int Id { get; set; }
        public int AccountNumber { get; set; }
        public decimal Balance { get; set; }
        public AccountType AccountType { get; set; }
        public int CustomerId { get; set; }

        public Customer Customer;
    }
}

我已经尝试将客户属性设置为“虚拟”,但它不起作用。

【问题讨论】:

    标签: c# entity-framework-core ef-fluent-api


    【解决方案1】:

    您需要将public Customer Customer; 更改为public Customer Customer { get; set; }。目前Customer 是一个字段而不是一个属性。

    【讨论】:

    • 已修复!我知道这会很简单。感谢您的回复,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2021-03-12
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多