2013-01-31 8 views
18

Mam dwa pierwsze modele kodu, Foo i FooState, gdzie Foo ma opcjonalny FooState.Kluczowy klucz Entity Framework jako klucz podstawowy Najpierw

public class Foo 
{ 
    [Key] 
    public int FooId { get; set; } 

    public FooState FooState { get; set; } 
} 

public class FooState 
{ 
    [Key] 
    public int FooStateId { get; set; } 

    [Required] 
    public int State { get; set; } 

    [Required] 
    public Foo Foo { get; set; } 
} 

Działa to dobrze, jednak gdy próbuję dodać klucz obcy do FooState jak tak

public class FooState 
{ 
    [Key] 
    public int FooStateId { get; set; } 

    [Required] 
    public int State { get; set; } 

    [ForeignKey("Foo")] 
    [Required] 
    public int FooId 
    public Foo Foo { get; set; } 
} 

To wszystko spada na ponieważ FooStateId jest naprawdę używając FooId jak to jest klucz podstawowy. Ma to sens z punktu widzenia bazy danych.

Nie chciałbym jednak wypełniać instancji Foo podczas zapisywania rekordu FooState, ale nadal zachowuję wymagany atrybut.

To pozwoliłoby mi wysłać FooId i podać w dto i nie trzeba pobierać całego obiektu Foo z DB, jeśli chcę zmienić jego stan.

Jak powinienem ustawić tę opcję za pomocą kodu EF?

Odpowiedz

26

Pomyślałem, że dam to zdjęcie i to działało ładnie.

public class FooState 
{ 
    [Required] 
    [Key] 
    [ForeignKey("Foo")] 
    public int FooStateId { get; set; } 

    [Required] 
    public int State { get; set; } 

    public Foo Foo { get; set; } 
} 
+8

można łączyć [Key, ForeignKey ("Foo")] – Zakos

Powiązane problemy