Ben*_*ter 2 entity-framework-4 entity-framework-ctp5
在CTP 4中,我们可以选择我们想要映射的属性,如下所示:
this.MapSingleType(i => new
{
i.Id,
i.OriginalFileName,
i.Extension,
i.MimeType,
i.Width,
i.Height,
i.ImageStoreLocationId,
i.AlternateText,
i.ImageData
});
Run Code Online (Sandbox Code Playgroud)
我们如何在CTP5中实现这一目标?
我尝试使用以下Map配置,但这似乎不起作用,因为我仍然必须显式忽略(this.Ignore(..))我不想映射的属性:
Map(config =>
{
config.Properties(i => new
{
i.OriginalFileName,
i.Extension,
i.MimeType,
i.Width,
i.Height,
i.ImageStoreLocationId,
i.AlternateText,
i.ImageData
});
config.ToTable("Images");
});
Run Code Online (Sandbox Code Playgroud)
考虑到新的API应该更流畅,我必须编写更多代码才能实现同样的功能.
谢谢Ben
这篇博客文章有ctp 5映射样本.
http://blogs.msdn.com/b/adonet/archive/2010/12/14/ef-feature-ctp5-fluent-api-samples.aspx
使所需的clr-nullable属性:
modelBuilder.Entity<Product>()
.Property(p => p.Name)
.IsRequired();
Run Code Online (Sandbox Code Playgroud)
更改字符串长度:
modelBuilder.Entity<Product>()
.Property(p => p.Name)
.HasMaxLength(50);
Run Code Online (Sandbox Code Playgroud)
关闭身份:
modelBuilder.Entity<Product>()
.Property(p => p.ProductId)
.HasDatabaseGenerationOption(DatabaseGenerationOption.None);
Run Code Online (Sandbox Code Playgroud)
忽略一个属性:
modelBuilder.Entity<Person>()
.Ignore(p => p.Name);
Run Code Online (Sandbox Code Playgroud)
表和列映射更改列名:
modelBuilder.Entity<Category>()
.Property(c => c.Name)
.HasColumnName("cat_name");
Run Code Online (Sandbox Code Playgroud)
更改表名称:
modelBuilder.Entity<Category>()
.ToTable("MyCategories");
Run Code Online (Sandbox Code Playgroud)
使用架构更改表名:
modelBuilder.Entity<Category>()
.ToTable("MyCategories", "sales");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3792 次 |
| 最近记录: |