#c_sharp #entity_framework
В домене приложения есть объект/entity Place (Место) и есть у него среди других value object'ов – координаты на яндекс:карте (x,y и zoom карты): public class Place { public int Id { get; set; } public string Title { get; set; } public YandexMapPoint Point { get; set; } } public class YandexMapPoint { public float X { get; set; } public float Y { get; set; } public byte Zoom { get; set; } } При этом я хочу, чтобы в базе это хранилось в одной таблице с полями Id, Title, x, y, zoom – и при чтении из базы разворачивалось обратно в доменный объект. А при сохранении доменного объекта – наоборот, складировалось в одну таблицу. Я использую EF (EF6 или Core, не принципиально) Code First. Как мне описать подобную структуру на уровне работы с базой данных?
Ответы
Ответ 1
Конечно, это возможно. Создавая новый проект, я думал, придётся либо с атрибутами помудрить, либо флюэнт-интерфейс заюзать. Но для начала я создал заготовку следующего вида: using System; using System.Data.Entity; using System.Linq; namespace ConAppEF { class Program { static void Main(string[] args) { using (var context = new MyContext()) { Console.WriteLine(context.Places.Count()); } } } public class MyContext : DbContext { public DbSetPlaces { get; set; } } public class Place { public int Id { get; set; } public string Title { get; set; } public YandexMapPoint Point { get; set; } } public class YandexMapPoint { public float X { get; set; } public float Y { get; set; } public byte Zoom { get; set; } } } После запуска было создана БД с такой таблицей: CREATE TABLE [dbo].[Places] ( [Id] INT IDENTITY (1, 1) NOT NULL, [Title] NVARCHAR (MAX) NULL, [Point_X] REAL NOT NULL, [Point_Y] REAL NOT NULL, [Point_Zoom] TINYINT NOT NULL, CONSTRAINT [PK_dbo.Places] PRIMARY KEY CLUSTERED ([Id] ASC) ); Даже не пришлось ничего делать.
Комментариев нет:
Отправить комментарий