一些外键在我的合同表中创建了双倍。(文章和客户)。公司还可以!
我的模型:
public class Contract {
[Key]
public int ContractID { get; set; }
public double PricePerUnit { get; set; }
public int Unit { get; set; }
public int Currency { get; set; }
[Required]
public int ClientID { get; set; }
public virtual Client Client { get; set; }
[Required]
public int CompanyID { get; set; }
public virtual Company Company { get; set; }
[Required]
public int ArticleID { get; set; }
public virtual Article Article { get; set; }
}
public class Client {
[Key]
public int ClientID { get; set; }
public string Number { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string ZipCode { get; set; }
public string City { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string Memo { get; set; }
public bool isMerchant { get; set; }
public string Name
{
get
{
return string.Format("{0} {1}", FirstName, LastName);
}
}
//[Required]
public int? MerchantReferenceID { get; set; }
public virtual Client MerchantReference { get; set; }
[Required]
public int CompanyID { get; set; }
public virtual Company Company { get; set; }
public virtual ICollection<Contract> Contracts { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
public class Company
{
[Key]
public int CompanyID { get; set; }
public string Name { get; set; }
public int DeviceIncomingWeight { get; set; }
public string ZipCode { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string City { get; set; }
public bool Admin { get; set; }
public int UnitForMeasurements { get; set; }
public int UnitForDisplayOnDocuments { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<Category> Categories { get; set; }
public virtual ICollection<Article> Articles { get; set; }
public virtual ICollection<Client> Clients { get; set; }
public virtual ICollection<Location> Locations { get; set; }
public virtual ICollection<Contract> Contracts { get; set; }
public virtual ICollection<IncomingMeasurement> IncomingMeasurements { get; set; }
public virtual ICollection<Measurement> Measurements { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
public class Article {
[Key]
public int ArticleID { get; set; }
[Required]
public string Code { get; set; }
public string Name { get; set; }
public bool TrackStock { get; set; }
public int CurrentStock { get; set; }
public double? Price { get; set; }
[Required]
public int CompanyID { get; set; }
public virtual Company Company { get; set; }
[Required]
public int CategoryID { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<Contract> Contracts { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}
这是我的 OnModelCreating,可能是错误所在:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// modelBuilder.Entity<Contract>().HasRequired(bm => bm.Company).WithMany().WillCascadeOnDelete(false);
modelBuilder.Entity<Contract>().HasRequired(bm => bm.Article).WithMany().WillCascadeOnDelete(false);
modelBuilder.Entity<Contract>().HasRequired(bm => bm.Client ).WithMany().WillCascadeOnDelete(false);
modelBuilder.Entity<Article>().HasRequired(bm => bm.Company).WithMany().WillCascadeOnDelete(false);
modelBuilder.Entity<Measurement>().HasRequired(bm => bm.Company).WithMany().WillCascadeOnDelete(false);
modelBuilder.Entity<Order>().HasRequired(bm => bm.Client).WithMany().WillCascadeOnDelete(false);
modelBuilder.Entity<Order>().HasRequired(bm => bm.Article).WithMany().WillCascadeOnDelete(false);
modelBuilder.Entity<IncomingMeasurement>().HasRequired(bm => bm.client).WithMany().WillCascadeOnDelete(false);
modelBuilder.Entity<Client>().HasOptional(c => c.MerchantReference).WithMany().HasForeignKey(c => c.MerchantReferenceID);
//Required fields
base.OnModelCreating(modelBuilder);
}
在我的数据库(我的 sql 服务器)中发生了一些奇怪的事情,即这是我的创建表模式。
这些是我的领域:
CREATE TABLE [dbo].[Contracts](
[ContractID] [int] IDENTITY(1,1) NOT NULL,
[PricePerUnit] [float] NOT NULL,
[Unit] [int] NOT NULL,
[Currency] [int] NOT NULL,
[ClientID] [int] NOT NULL,
[CompanyID] [int] NOT NULL,
[ArticleID] [int] NOT NULL,
[Client_ClientID] [int] NOT NULL,
[Article_ArticleID] [int] NOT NULL,
[Client_ClientID1] [int] NULL,
[Article_ArticleID1] [int] NULL,
如果您注意到,[Client_ClientID] 有一个重复项:[Client_ClientID1] 和 [Article_ArticleID1] 中的 [Article_ArticleID]。但公司没有。
关于如何解决这个问题的任何想法?