using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OneToOne
{
class Program
{
static void Main(string[] args)
{
var model = new Model1();
Man man = new Man
{
Name = "davie"
};
Person p = new Person { Name = "tt" };
model.Persons.Add(p);
man.Person = p;
model.Mans.Add(man);
model.Persons.Add(p);
var i = model.SaveChanges();
if (i > 0)
{
Console.WriteLine("输出成功");
}
else
{
Console.WriteLine("输出失败");
}
}
}
}
namespace OneToOne
{
using System;
using System.Data.Entity;
using System.Linq;
public class Model1 : DbContext
{
//您的上下文已配置为从您的应用程序的配置文件(App.config 或 Web.config)
//使用“Model1”连接字符串。默认情况下,此连接字符串针对您的 LocalDb 实例上的
//“OneToOne.Model1”数据库。
//
//如果您想要针对其他数据库和/或数据库提供程序,请在应用程序配置文件中修改“Model1”
//连接字符串。
public Model1()
: base("name=Model2")
{
}
public virtual DbSet<Person> Persons { get; set; }
public virtual DbSet<Man> Mans { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//双向one to one
//man的id不能是identity的
modelBuilder.Entity<Man>()
.HasRequired(a => a.Person)
.WithOptional(a => a.Man)
.WillCascadeOnDelete(true)
;
// 单向one to one
//modelBuilder.Entity<Person>()
// .HasOptional(x => x.Man).WithMany()
// .HasForeignKey(x => x.ManId);
//// one to many Address - Person
//modelBuilder.Entity<Man>()
// .HasRequired(x => x.Person).WithMany()
// .HasForeignKey(x => x.PersonId);
}
}
}
namespace OneToOne
{
[Table("Person")]
public class Person
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PersonId { get; set; }
public string Name { get; set; }
public virtual Man Man { get; set; }
}
}