2010-01-18 10 views
7

He estado buscando un ejemplo sobre cómo construir una relación uno a uno en EF4v2 con POCO. Encontré muchos ejemplos que muestran solo cómo crear uno-a-muchos o muchos-a-muchos. ¿Tienes algún recurso al respecto?relaciones uno-a-uno en Entity Framework 4 v2 con POCO

+0

Me gustaría ver una respuesta a esta pregunta. –

Respuesta

1

Mira Customer ->CustomerDetail en this example. Esto es 1: 0..1, pero supongo que será suficiente.

+1

Ese enlace ahora dice "La información en esta publicación está desactualizada". y te envía al portal de EF. – DOK

3

Esto funcionó para mí.

Database design

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Data; 
using System.Data.Entity; 
using System.Data.Entity.ModelConfiguration.Conventions; 
using System.Linq; 

class Program 
{ 
    static void Main(string[] args) 
    { 
    var myContext = new MyContext(@"Server=.\sqlexpress;Database=CodeFirst;integrated security=SSPI;"); 

    var fr = new FirstReading() { Increment = 12}; 
    myContext.Entry(fr).State = EntityState.Added; 
    myContext.SaveChanges(); 

    var sr = new SecondReading() { Increment = 4 }; 
    sr.FirstReading = fr; 
    myContext.SecondReading.Add(sr); 
    myContext.SaveChanges(); 

    fr = myContext.FirstReading.Single(x => x.Increment == 12); 
    Console.WriteLine(fr.Increment); 
    Console.WriteLine(fr.SecondReading.Increment); 
    sr = myContext.SecondReading.Single(x => x.Increment == 4); 
    Console.WriteLine(sr.Increment); 
    Console.WriteLine(sr.FirstReading.Increment); 
    Console.ReadKey(); 
    } 
} 

public class FirstReading 
{ 
    [Key][ForeignKey("SecondReading")] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int FirstReadingId { get; set; } 
    public int Increment { get; set; } 
    public virtual SecondReading SecondReading { get; set; } 
} 
public class SecondReading 
{ 
    [Key] 
    [ForeignKey("FirstReading")] 
    public int FirstReadingId { get; set; } 
    public int Increment { get; set; } 
    public virtual FirstReading FirstReading { get; set; } 
} 

public class MyContext : DbContext 
{ 
    public DbSet<FirstReading> FirstReading { get; set; } 
    public DbSet<SecondReading> SecondReading { get; set; } 

    public MyContext(string connectionString) 
    : base(connectionString) 
    { 
    Database.SetInitializer<MyContext>(null); 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
    } 

} 
Cuestiones relacionadas