我在包管理器控制臺中的錯誤:
無法將屬性或導航“MenuId”添加到物體型別“ThAmCo.Catering.Models.FoodBooking”,因為物體型別“ThAmCo.Catering.Models.FoodBooking”上已存在同名的屬性或導航。
我正在嘗試為作業創建資料庫,但是,我遇到了這個錯誤。
這是我當前的 DbContext:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace ThAmCo.Catering.Models
{
public class ThAmCoContext : DbContext
{
public DbSet<MenuFoodItem> MenuFoodItem { get; set; }
public DbSet<FoodBooking > FoodBooking { get; set; }
public DbSet<Menu> Menu { get; set; }
public DbSet<FoodItem> FoodItem { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options) =>
options.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=ThAmCoCatering;");
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Foreign Key
builder.Entity<MenuFoodItem>()
.HasKey(a => new { a.MenuId, a.FoodItemId });
builder.Entity<MenuFoodItem>()
.HasOne(a => a.Menu)
.WithMany(m => m.FoodItem)
.HasForeignKey(a => a.MenuId)
.HasForeignKey(a => a.FoodItemId);
builder.Entity<MenuFoodItem>()
.HasOne(a => a.FoodItem)
.WithMany()
.HasForeignKey(a => a.FoodItemId);
builder.Entity<FoodBooking>()
.HasOne(m => m.Menu)
.WithMany()
.HasForeignKey(m => m.MenuId)
.OnDelete(DeleteBehavior.Restrict);
builder.Entity<FoodBooking>()
.HasOne(a => a.Menu)
.WithMany()
.HasForeignKey(a => a.MenuId);
}
}
}
這是我的 FoodBooking:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;
namespace ThAmCo.Catering.Models
{
public class FoodBooking
{
public FoodBooking()
{
}
[Key]
public int FoodBookingId { get; set; }
public int ClientReferenceId { get; set; }
public int NumberOfGuests { get; set; }
public Menu Menu { get; set; }
public int MenuId { get; set; }
}
}
這是我的 FoodItem 類:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace ThAmCo.Catering.Models
{
public class FoodItem
{
public FoodItem()
{
}
public FoodItem(int FoodItemId, string Description, float UnitPrice)
{
this.FoodItemId = FoodItemId;
this.Description = Description;
this.UnitPrice = UnitPrice;
}
public int FoodItemId { get; set; }
[Required]
public string Description { get; set; }
[Required]
public float UnitPrice { get; set; }
}
}
這是我的選單類:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace ThAmCo.Catering.Models
{
public class Menu
{
public Menu()
{
}
public Menu(int MenuId, string MenuName)
{
}
[Key]
public int MenuId { get; set; }
[Required]
public string MenuName { get; set; }
public ICollection<MenuFoodItem> FoodItem { get; set; }
}
}
這是我的 MenuFoodItem 類:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace ThAmCo.Catering.Models
{
public class MenuFoodItem
{
public MenuFoodItem()
{
}
public MenuFoodItem(int FoodItemId, int MenuId)
{
this.FoodItemId = FoodItemId;
this.MenuId = MenuId;
}
public int FoodItemId { get; set; }
public FoodItem FoodItem { get; set; }
public int MenuId { get; set; }
public Menu Menu { get; set; }
}
}
對于背景關系,它應該是一個網路應用程式,它允許我為場地創建選單和食品。
根據規范,ERD 應如下所示:

uj5u.com熱心網友回復:
洗掉這個重復的部分:
builder.Entity<FoodBooking>()
.HasOne(a => a.Menu)
.WithMany()
.HasForeignKey(a => a.MenuId);
更新這部分:
builder.Entity<MenuFoodItem>()
.HasOne(a => a.Menu)
.WithMany(m => m.FoodItem)
.HasForeignKey(a => a.MenuId)
.HasForeignKey(a => a.FoodItemId);
builder.Entity<MenuFoodItem>()
.HasOne(a => a.FoodItem)
.WithMany()
.HasForeignKey(a => a.FoodItemId);
到
builder.Entity<MenuFoodItem>()
.HasOne(a => a.FoodItem)
.WithMany()
.HasForeignKey(a => a.FoodItemId);
builder.Entity<MenuFoodItem>()
.HasOne(a => a.Menu)
.WithMany(a => a.FoodItem)
.HasForeignKey(a => a.MenuId);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/396257.html
