假设我使用实体框架6为asp.net mvc 5应用程序提供了以下模型结构
class Athlete {
int AthleteID {get; set;}
List<YearsAsAthlete> YearsAsAthlete {get;set;}
}
class YearsAsAthlete {
int YearsAsAthleteID {get;set;}
int AthleteID {get;set;}
[ForeignKey("AthleteID")]
Athlete Athlete {get;set;}
List<ContractRevenue> ContractRevenue {get;set;}
List<AdvertisementRevenue> AdvertisementRevenue {get;set;}
}
class ContractRevenue {
int ContractRevenueID {get;set;}
int YearsAsAthleteID {get;set;}
[ForeignKey("YearsAsAthleteID")]
YearsAsAthlete YearsAsAthlete {get;set;}
List<RevenueAmounts> RevenueAmounts {get;set;}
}
class AdvertisementRevenue {get;set;}
int AdvertisementRevenueID {get;set;}
int YearsAsAthleteID {get;set;}
[ForeignKey("YearsAsAthleteID")]
YearsAsAthlete YearsAsAthlete {get;set;}
List<RevenueAmounts> RevenueAmounts {get;set;}
}
class RevenueAmounts {
int RevenueAmountsID {get;set;}
int AmountPaid {get;set;}
date DateOfPayment {get;set;} …Run Code Online (Sandbox Code Playgroud) 我正在添加EF6并尝试重新创建遗留数据库的模型.我也在制作WCF Web服务.有太多的字段,所以我最小化了示例以更好地查明问题.
我正在尝试将一些数据输入到订单的数据库中.订单包括OrderLines,每个OrderLine都可以拥有许可证.OrderLine在极少数情况下是一对多,所以我必须做一对多.如果一个OrderLine和许可证用于零件,则下一个OrderLine和许可证用于该零件的维护.部件许可证必须链接到维护许可证.

ParentLicenceId是个问题.在我的旧数据库中,一个许可证与另一个部件类型维护许可证之间存在关系.因此,如果客户购买第X部分,他们可能需要为部分X维修1年.因此,部分X维护许可证将列出部分X许可证作为其父部分.
using OrderExample;
using System;
using System.Collections.Generic;
namespace OrderExampleCmd
{
class Program
{
static void Main()
{
var omc = new OrderExampleEntities();
var order = new Order
{
OrderNumber = new Guid().ToString(),
OrderLines = new List<OrderLine>()
};
// Maitenance
var orderLine1 = new OrderLine
{
OrderLineNumber = 1,
Licenses = new List<License>()
};
var orderLine1License = new License
{
LicenseType = "Maintenance"
};
orderLine1.Licenses.Add(orderLine1License);
// Part
var orderLine2 = new OrderLine
{
OrderLineNumber = 2,
Licenses = …Run Code Online (Sandbox Code Playgroud) 我有以下类,设置为测试:
public class Company
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
}
public class Employee
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
}
public class EFTestDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
public DbSet<Company> Companies { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
为了测试,我想通过单个SaveChanges调用为该公司插入一个公司和一个员工,如下所示:
Company company …Run Code Online (Sandbox Code Playgroud)