Образец Entity Framework VB.NET 4.2 Разделение первого объекта - PullRequest
1 голос
/ 14 декабря 2011

Разделение сущностей: один класс, две или более таблиц.

Вот как это делается в C #, но мне нужно, чтобы оно работало в vb.net.
Еще одна вещь: имя класса и столбцы таблицы не не совпадают, поэтому я должен быть в состоянии отобразить это тоже.

Я должен заставить это работать таким образом, потому что сейчас я работаю в магазине vb.net only , а схема базы данных fubar , но они так много (миллионов) строк кода было сделано напрямую для базы данных в веб-формах asp classic, vb.net и asp.net, что изменить схему прямо сейчас невозможно.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Entity<Post>()
    .Map(m =>
      {
        m.Properties(p => new { p.Title, p.Content });
        m.ToTable("Posts");
      })
    .Map(m =>
      {
        m.Properties(p => new { p.Photo });
        m.ToTable("PostPhotos");
      });
}

Ответы [ 2 ]

3 голосов
/ 21 декабря 2011

Это VB эквивалент вышеупомянутого:

    modelBuilder.Entity(Of Post)().Map(Sub(m)
                                          m.Properties(Of Post)(
                                             Function(p) _
                                                New Post With {.Title= p.Title, _
                                                               .Content = p.Content })
                                          m.ToTable("Posts")
                                        End Sub).Map(Sub(m)
                                                       m.Properties(
                                                          Function(p) _
                                                            New Customer With {.Photo = p.Photo})
                                                       m.ToTable("PostPhotos")
                                                     End Sub)
0 голосов
/ 18 июля 2014

Здесь верная версия (с использованием Anonymous Type) принятого ответа. Я надеюсь, что это поможет ...

Вы действительно можете сделать это с помощью точечной нотации, но отступ кода действительно странный. Я предпочел другой способ: создать EntityTypeConfiguration Class

 Public Class PostConfiguration
    Inherits EntityTypeConfiguration(Of Post)

    Public Sub New()

        Map(Sub(m)
                m.Properties(
                   Function(p) _
                      New With {Key p.Title, Key p.Content})
                m.ToTable("Posts")
            End Sub)

        Map(Sub(m)
                m.Properties(
                   Function(p) _
                     New With {Key p.Photo })
                m.ToTable("PostPhotos")
            End Sub)

    End Sub
  End Class

Вам просто нужно добавить этот конфиг к модели, например так:

  Protected Overrides Sub OnModelCreating(ByVal modelBuilder As DbModelBuilder)
        modelBuilder.Configurations.Add(New PostConfiguration)
    End Sub
...