在我的合同表中创建了一些外键。 (文章和客户)。公司没关系!数据库中的外键复制
我的模型:
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 Server),即这是我创建表架构。
这些都是我的领域:
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_ArticleID]在[Article_ArticleID1。 但公司没有。
有关如何解决这个问题的任何想法?
请参阅我对其他答案的评论:) – NicoJuicy
我阅读它和我希望它有助于发现问题 - 请参阅我的更新。 –
工作以更改视图,模型,代码,... ;-)将尽快更新! – NicoJuicy