嘗試在OnModelCreating實體框架核心上動態加載所有配置。 如果缺少ModelConfiguration,反之亦然。EF內核中缺少System.Data.Entity.ModelConfiguration
6
A
回答
2
我剛剛偶然發現了這個問題,因爲我自己正在尋找答案。我發現它不是(但?)在EF內核中實現的,但可以很容易地實現。
您可以創建下列操作之一:
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Microsoft.EntityFrameworkCore
{
public abstract class EntityTypeConfiguration<TEntity> where TEntity : class
{
public abstract void Map(EntityTypeBuilder<TEntity> modelBuilder);
}
public static class ModelBuilderExtensions
{
public static void AddConfiguration<TEntity>(this ModelBuilder modelBuilder, EntityTypeConfiguration<TEntity> configuration) where TEntity : class
{
configuration.Map(modelBuilder.Entity<TEntity>());
}
}
}
然後你就可以創建實體本身的配置: -
using Microsoft.EntityFrameworkCore;
using Project.Domain.Models;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Project.Persistance.EntityConfigurations
{
public class MyEntityConfiguration : EntityTypeConfiguration<MyEntity>
{
public override void Map(EntityTypeBuilder<MyEntity> modelBuilder)
{
modelBuilder
.Property();//config etc
}
}
}
然後,您可以加載所有的地方配置(有可能這是我做的更好的方式和更好的地方......但是這是我做的): -
using Microsoft.EntityFrameworkCore;
using Project.Domain.Models;
using Project.Persistance.EntityConfigurations;
namespace Project.Persistance
{
public class MyDbContext : DbContext
{
// Normal DbContext stuff here
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.AddConfiguration(new MyEntityConfiguration());
}
}
}
0
它甚至在覈心2.0現在更容易
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace MyApp.DAL.EntityConfigurations
{
public class StudentConfiguration : IEntityTypeConfiguration<Student>
{
public void Configure(EntityTypeBuilder<Student> modelBuilder)
{
modelBuilder.Property(f => f.Name).IsRequired();
}
}
}
在你的數據庫方面
然後:
public DbSet<Student> Students{ get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customizations must go after base.OnModelCreating(builder)
builder.ApplyConfiguration(new StudentConfig());
builder.ApplyConfiguration(new SomeOtherConfig());
// etc.
// etc..
}
相關問題
- 1. 缺少內核GPU與tf.int64可變
- 2. DOTNET核心 - 缺少csproj.metaproj
- 3. 缺少Rspec的核心
- 4. .net核心中缺少方法例外
- 5. 缺少路徑中的核心名稱
- 6. .Net核心中缺少IsGenericType&IsValueType?
- 7. 在較新的Linux內核中缺少sk_buff_head
- 8. System.Data.Entity.ModelConfiguration不存在
- 9. 缺少裝配參考EF MVC 5
- 10. EF 4:缺少基本功能?
- 11. 內容中缺少urllib2.urlopen()
- 12. 缺少WordPress內容?
- 13. 無法引用System.Data.Entity.ModelConfiguration
- 14. 模擬器錯誤:此AVD的配置缺少內核文件
- 15. 的Linux - 百勝安裝GCC - 缺少內核頭文件
- 16. 編譯內核時出錯:缺少雙重算術?
- 17. 缺少的頭在內核編譯...但頭已安裝
- 18. __vdso_time從核心實用程序缺少?
- 19. 斯坦福核心NLP缺少根
- 20. 缺少架子工ASP.Net核心
- 21. MySqlDataAdapter似乎缺少.Net核心
- 22. 缺少核心數據通知
- 23. Asp.net核2.0基本JWT缺少ApplicationCookie
- 24. 導入ZXing - 缺少核心/ build.xml
- 25. 遷移.NET核心2.0 IActionSelectorDecisionTreeProvider缺少
- 26. org.apache.solr.common.SolrException:缺少內容流
- 27. Jpanel內缺少Jbutton行
- 28. DataBindingUtil缺少內部類
- 29. EF 6和EF核心
- 30. SSIS有多少個內核?