标签: ef-code-first

实体框架4:代码优先 - 在另一个模式中创建数据库?MapSingleType?

我有一个数据库,我使用2种不同的模式.模式就像名称空间(如果我错了,请纠正我).这样我有1个db和当前2个模式...因此1个模式中的表可以与其他模式中的表命名相同,因为它们位于不同的模式中.

如何让EF Code首先与不同的模式进行通信而不是默认模式?

是否与MapSingleType和覆盖方法有关,还是我可以做其他事情?

任何帮助真的很感激.

c# schema entity-framework-4 ef4-code-only ef-code-first

18
推荐指数
2
解决办法
5556
查看次数

如何使用Entity Framework 4 Code-First定义数据库视图?

如何使用Entity Framework 4 Code-First定义数据库视图?我在任何地方都找不到任何相关的东西!

ef-code-first entity-framework-4.1

18
推荐指数
2
解决办法
3万
查看次数

如何预编译实体框架代码优先查询?

我在实体框架代码优先查询中遇到了一些性能问题,我相信预编译可能就是答案.如果我使用"普通"实体框架,我只需使用CompiledQuery.Compile方法预先查询我的查询.但由于我有一个DbContext而不是ObjectContext,我无法让它工作.

我确实认识到DbContext是一个IObjectContextAdapter,它允许我访问ObjectContext,但我找不到让我从我的预编译查询中运行的对象上下文中获取IQueryable的方法.我试图使用CreateObjectSet,但是当EF试图运行查询时,它抱怨它无法将该方法转换为SQL.

那么针对Code-First DbContext预编译LINQ查询的最佳方法是什么?

entity-framework ef-code-first entity-framework-4.1

18
推荐指数
2
解决办法
7960
查看次数

如何使用EntityFramework Code首先迁移种子数据

嗨我正在使用这个nuGet包的Beta 1版本,数据库已经全部创建,我需要知道是否有办法通过迁移来填充我的表.Thanxs

asp.net entity-framework ef-code-first ef-migrations

18
推荐指数
1
解决办法
2万
查看次数

为什么我使用Entity Framework Code First外键属性获得额外的外键列?

我最近遇到了Entity Framework Code First的这个奇怪问题.

我的班级看起来像这样

public class Status
{
        [Key]
        public int StatusID { get; set; }     
        public string Name { get; set; }
        public int MemberID { get; set; }

        [ForeignKey("MemberID")]
        public virtual Member Member { get; set; }                

        public int PosterID { get; set; }

        [ForeignKey("PosterID")]
        public virtual Member Poster { get; set; }        

        public virtual ICollection<StatusLike> StatusLikes { get; set; }        
        public virtual ICollection<StatusComment> StatusComments { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的会员班看起来像这样

 public class Member
    {
        [Key]
        public …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first

18
推荐指数
2
解决办法
1万
查看次数

EF5 Code First中的多对多关系如何指定表名?

我对EF很新,我不确定如何做到这一点.

我有一个多对多的关系,就像这样:

在此输入图像描述

当我尝试将资源(Recurso)添加到配置文件(Perfil)时,我收到以下错误:

Invalid object name 'dbo.RecursoPerfils

地狱到底RecursoPerfils来自哪里?

如何指定(最好通过属性注释)此关系的表名?

请参阅以下模型:

[Table("Perfil")]
public class Perfil
{
    public Perfil()
    {
        this.Usuarios = new List<Usuario>();
        this.Recursos = new List<Recurso>();
    }

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public int IdPerfil { get; set; }
    [Required]
    public string Descricao { get; set; }

    public virtual ICollection<Usuario> Usuarios { get; set; }
    public virtual ICollection<Recurso> Recursos { get; set; }
}

[Table("Recurso")]
public class Recurso
{
    public Recurso()
    {
        this.Perfis = new List<Perfil>();
    }

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public int …
Run Code Online (Sandbox Code Playgroud)

many-to-many ef-code-first entity-framework-5

18
推荐指数
1
解决办法
8865
查看次数

EF迁移:自动迁移中的RenameColumn?

如果重命名属性,Visual Studio IDE非常智能,可以帮助您重构在整个代码中重命名该属性.如果重命名位于EF迁移中使用的模型上,则运行标准自动迁移,如:

update-database -f
Run Code Online (Sandbox Code Playgroud)

你会得到这个:

AddColumn("NewName"...
DropColumn("OldName"...
Run Code Online (Sandbox Code Playgroud)

不是你想要的.显然,此时运行Add-Migration将允许您进入并手动将这两个调用更改为对RenameColumn的单个调用,但是有一些方法可以让自动迁移自动执行此操作吗?一些财产重命名方法可能会让我做得不对劲?

我在VS2012中使用EF 5.0,但这种行为也出现在EF 4.3.1和VS2010中.

entity-framework code-first ef-code-first ef-migrations entity-framework-5

18
推荐指数
2
解决办法
4649
查看次数

无法检索元数据

MVC4 +实体框架4.4 + MySql + POCO /代码优先

我正在设置上面的配置..这是我的课程:

namespace BTD.DataContext
{
public class BTDContext : DbContext
{

    public BTDContext()
        : base("name=BTDContext")
    {

    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        //modelBuilder.Conventions.Remove<System.Data.Entity.Infrastructure.IncludeMetadataConvention>();
    }

    public DbSet<Product> Products { get; set; }

    public DbSet<ProductImage> ProductImages { get; set; }        


}
}

namespace BTD.Data
{
[Table("Product")]
public class Product
{
    [Key]
    public long ProductId { get; set; }

    [DisplayName("Manufacturer")]
    public int? ManufacturerId { get; set; }

    [Required]
    [StringLength(150)]
    public string Name { get; set; …
Run Code Online (Sandbox Code Playgroud)

mysql asp.net asp.net-mvc entity-framework ef-code-first

18
推荐指数
3
解决办法
3万
查看次数

建模多态关联数据库优先与代码优先

我们有一个数据库,其中一个表包含可以是其他几个表的子记录.它有一个"软"外键,由所有者的Id和表名组成.这种(反)模式被称为"多态关联".我们知道它不是有史以来最好的数据库设计,我们会在适当的时候改变它,但不会在不久的将来改变它.让我举一个简化的例子:

在此输入图像描述

两者Event,PersonProduct在评论中有记录.如您所见,没有严格的FK约束.

在实体框架可以通过sublassing支持这种模式Comment进入EventComment等,让EventEventComments收集等:

在此输入图像描述

从数据库生成基本模型后,手动添加子类和关联.OwnerCode是这个TPH模型中的鉴别器.请注意Event,PersonProduct完全不同的实体.为它们建立一个公共基类是没有意义的.

这是数据库优先的.我们的现实模型就是这样,没问题.

好.现在我们想要转向代码优先.所以我开始将数据库逆向工程化为代码优先模型(EF Power Tools),然后继续创建子类并映射关联和继承.试图连接到Linqpad中的模型.那是麻烦开始的时候.

当尝试使用此模型执行查询时,它会抛出一个 InvalidOperationExeception

外键组件"OwnerId"不是"EventComment"类型的声明属性.验证它是否未从模型中明确排除,并且它是有效的原始属性.

当我有双向关联并被OwnerId映射为属性时会发生这种情况Comment.我的EventMapclass(EntityTypeConfiguration<Event>)中的映射如下所示:

this.HasMany(x => x.Comments).WithRequired(c => c.Event)
    .HasForeignKey(c => c.OwnerId);
Run Code Online (Sandbox Code Playgroud)

所以我尝试OwnerId在模型中映射关联:

this.HasMany(x => x.Comments).WithRequired().Map(m => m.MapKey("OwnerId"));
Run Code Online (Sandbox Code Playgroud)

这引发了一个 MetaDataException

指定的架构无效.错误:(10,6):错误0019:类型中的每个属性名称必须是唯一的.已定义属性名称"OwnerId".(11,6):错误0019:类型中的每个属性名称必须是唯一的.已定义属性名称"OwnerId".

如果我删除三个实体注释关联中的两个,那就没关系,但当然这不是治愈方法.

更多细节:

  • 可以通过添加DbContext生成器项从edmx创建工作的DbContext模型("代码秒").(这将是暂时的解决方法).
  • 当我将工作代码优先模型(带有一个关联)导出到edmx(EdmxWriter)时,关联似乎在存储模型中,而在原始edmx中,它们是概念模型的一部分.

那么,我该如何创建这个模型代码呢?我认为关键是如何指导代码优先映射概念模型中的关联,而不是存储模型.

c# foreign-keys ef-code-first ef-database-first entity-framework-5

18
推荐指数
1
解决办法
2326
查看次数

在程序集"SMSApp"中找到了多个迁移配置类型.指定要使用的名称

我正在使用代码优先方法开发mvc 5应用程序.

我正面临一个问题.在我第一次尝试下面的命令时,它在该数据库中工作并生成表.但是当我更改了一些类,然后尝试了前2个查询时,它就适用于那种情况但是当我尝试第三个命令时,它给了我这个消息.

First step
==========

enable-migrations -ContextTypeName IdentityDb -MigrationsDirectory DAL\IdentityMigrations

enable-migrations -ContextTypeName SMSContext -MigrationsDirectory DAL\SMSMigrations

Second Step
===========

add-migration -ConfigurationTypeName SMSApp.DAL.IdentityMigrations.Configuration "InitialCreate"

add-migration -ConfigurationTypeName SMSApp.DAL.SMSMigrations.Configuration "InitialCreate"

Third Step
==========

update-database -ConfigurationTypeName SMSApp.DAL.IdentityMigrations.Configuration -verbose

update-database -ConfigurationTypeName SMSApp.DAL.SMSMigrations.Configuration -verbose

看到第一个错误:

PM> add-migration -ConfigurationTypeName SMSApp.DAL.IdentityMigrations.Configuration "InitialCreate"
Scaffolding migration ' '.
The Designer Code for this migration file includes a snapshot of your current Code First model. This snapshot is used to calculate the changes to your model when you scaffold the next …
Run Code Online (Sandbox Code Playgroud)

.net asp.net-mvc entity-framework ef-code-first

18
推荐指数
1
解决办法
2万
查看次数