Подтвердить что ты не робот

Как сопоставить тип значения, который имеет ссылку на объект?

У меня проблема с отображением в Entity Framework.

У меня есть следующие классы (упрощенные):

public class Building
{

    public int ID { get; set; }     
    // *.. snip..* other properties
    public Location Location { get; private set; }
}

public class Location
{
    public string Street {get; set;}
    public Country country {get; set}
}
public class Country
{
    public int ID { get; set; } 
    public string Name { get; set; } 
}

Здание и страна являются объектами, они сохраняются в базе данных. Расположение - это тип значения и должен отображаться в той же таблице, что и в здании.

Однако, когда я сопоставляю его таким образом, инфраструктура сущности хочет также сопоставить местоположение с таблицей и жалуется, что у нее нет ключа. Я не хочу давать ему ключ, так как он принадлежит зданию и не должен быть сущностью вообще.

Я видел обходные пути, которые говорят, что вам нужно поместить страну в класс Building, но это просто не очень хорошо (и семантически просто неправильно).

Я использую Entity Framework 5

4b9b3361

Ответ 1

Вы можете отметить свойство Location в классе Building с атрибутом [NotMapped].

using System.ComponentModel.DataAnnotations.Schema;
public class Building
{
    [NotMapped]
    public Location Location { get; private set; }
}

Надеюсь, что решает вашу проблему!