标签: entity-framework-5

EF5启动项目:错误运行转换:请覆盖替换令牌'$ edmxInputFile $'

我正在使用.Net4.5在VS2012中创建一个控制台项目.之后我将"添加","新项目"添加到项目中,然后选择"EF 5.x DbContext Generator".然后,几秒钟后,"错误列表"选项卡中会显示以下错误消息:

错误1运行转换:请使用您要生成的.edmx文件的实际名称覆盖替换标记'$ edmxInputFile $'.C:\项目\测试\ ConsoleAppEF5\ConsoleAppEF5\Model1.tt`

我怎样才能解决这个问题 ?

我错过了什么?

c# .net-4.5 entity-framework-5

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

实体框架代码首先使用Guid作为另一个标识列的标识

如何在Code First中创建多个标识列?

由于群集性能,常见的建议是使用自动增量整数列而不是使用创建的GUID newid().

要将列声明为自动增量,必须使用注释指定它[DatabaseGenerated(DatabaseGeneratedOption.Identity)].

但是,您只能在表格中拥有一个身份.

所以从基础模型开始,如:

public abstract class ModelBase {
    // the primary key
    public virtual Guid Id { get; set; }

    // a unique autoincrementing key
    public virtual int ClusterId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我们如何设置它以便:

  1. Guid 由数据库自动生成,而不是代码
  2. ClusterId 是自动增量的
  3. Entity Framework Code First不会抛出各种错误,例如:
    • 不支持对主键列具有属性"StoreGeneratedPattern"设置为"已计算"的表的修改.请改用"身份"模式.

仅供参考,如果你想在代码中自动生成它,你可以跳过Id字段上的注释并执行以下操作:

public abstract class AbstractContext : DbContext {

  /// <summary>
  /// Custom processing when saving entities in changetracker
  /// </summary>
  /// <returns></returns>
  public override int …
Run Code Online (Sandbox Code Playgroud)

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

37
推荐指数
1
解决办法
4万
查看次数

EF5代码优先 - 使用迁移更改列类型

我是EF5 Code First的新手,在开始工作项目之前,我正在修改概念验证.

我最初创建了一个看起来像的模型

public class Person {
  public int Id { get; set; }
  public string FirstName { get; set;}
  public string Surname {get;set;}
  public string Location {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我添加了一些记录,使用了一个我坚持在顶部的MVC应用程序.

现在我想将Location列更改为枚举,如:

public class Person {
  public int Id { get; set; }
  public string FirstName { get; set;}
  public string Surname {get;set;}
  public Locations Location {get;set;}
}

public enum Locations {
  London = 1,
  Edinburgh = 2,
  Cardiff = 3
}
Run Code Online (Sandbox Code Playgroud)

当我添加新的迁移时,我得到:

AlterColumn("dbo.People", "Location", c => c.Int(nullable: false));
Run Code Online (Sandbox Code Playgroud)

但是当我运行update-database时出现错误 …

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

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

实体框架订购包括

我想尝试以下工作:

_dbmsParentSections = FactoryTools.Factory.PdfSections
                        .Include(x => x.Children.OrderBy(y => y.Order).ToList())
                        .Include(x => x.Hint).Include(x => x.Fields)
                        .Where(x => x.FormId == FormId && x.Parent == null)
                        .OrderBy(o => o.Order)
                        .ToList();
Run Code Online (Sandbox Code Playgroud)

导致异常的部分是:

.Include(x => x.Children.OrderBy(y => y.Order).ToList())
Run Code Online (Sandbox Code Playgroud)

编辑:

经过进一步观察,

_dbmsParentSections.ForEach(x => x.Children = x.Children.OrderBy(y => y.Order).ToList());
Run Code Online (Sandbox Code Playgroud)

为我完成了这项工作(在初次Factory通话之后没有Children.OrderBy).

c# linq entity-framework entity-framework-5

37
推荐指数
4
解决办法
4万
查看次数

如何从NuGet安装EntityFramework 5.0(和其他旧版本)?

我将EF 5.0安装到.DAL中,现在我想从Nuget将EF 5.0安装到.BLL中

但是默认的在线Nuget软件包总是会出现6.0,这与我在DAL中使用的5.0 EF一起使用时会出错.

我在哪里可以将5.0版本的EntityFramework安装到我的Nuget包中?

c# asp.net entity-framework-5 entity-framework-6

37
推荐指数
2
解决办法
8万
查看次数

实体框架:我设置外键,SaveChanges然后访问导航属性,但它不加载相关实体.为什么不?

我将这个Entity类与Entity Framework 5 Code First一起使用:

public class Survey
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    public string SurveyName { get; set; }

    [Required]
    public int ClientID { get; set; }

    [ForeignKey("ClientID")]
    public virtual Client Client { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我的Controller的Create方法中,我这样做:

    Survey entity = new Survey()
    {
        SurveyName = "Test Name",
        ClientID = 4
    };
    db.Surveys.Add(entity);
    db.SaveChanges();
    Client c1 = entity.Client;                    //Why is this null?
    Client c2 = db.Clients.Find(entity.ClientID); //But this isn't?

    string s2 = c2.ClientName;
    string s1 …
Run Code Online (Sandbox Code Playgroud)

lazy-loading ef-code-first entity-framework-5

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

EF 5在运行时更改连接字符串

好吧,我想重新创建一个我使用EF 4.1到EF 5.0创建的项目,这个项目很简单,或者至少我认为.我的旧项目中的一件事是我能够在运行时在EF 4.1中更改数据库连接字符串:

using (var myContext = new MyEntities(ConnectionString))
{

}
Run Code Online (Sandbox Code Playgroud)

轻松但在EF 5.0中你必须以不同的方式做到这一点:

string connectionString = "data source=LocalHost;initial catalog=MyDatabase;user id=MyUserName;password=MyPassword;multipleactiveresultsets=True;App=EntityFramework";

using (var myContext = new MyEntities())
{
         myContext.Database.Connection.ConnectionString = connectionString;
}
Run Code Online (Sandbox Code Playgroud)

现在,这花了我两个小时的时间来弄清楚,所以我想我的问题是这是在运行时更改连接字符串的正确方法吗?如果这是为什么他们做出这个改变?

我找到了这个链接,但它没有用.我收到了Ladislav Mrnka在第一个回答的第一条评论中详述的错误.我后来发现这个链接似乎工作正常.

UPDATE

我重新阅读了我发布的第一个链接,我发现了另一个解决方案,我只是创建了一个部分类:

public partial class MyEntities : DbContext
{
    public MyEntities(string connectionString) : base(connectionString) 
    {
          Database.Connection.ConnectionString = connectionString; 
    }
}
Run Code Online (Sandbox Code Playgroud)

entity-framework connection-string entity-framework-4.1 entity-framework-5

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

在程序集中找不到上下文类型

我首先使用.NET 4.0,MVC3和EF5代码.

我的解决方案分为三个项目,依赖项如下所示:

Project.Web - > Project.BLL - > Project.DAL

Project.DAL层包含我的实体框架数据上下文类和我的所有实体,但我的启动项目是Project.Web,因此它包含我的Web.config,连接字符串和实际的SQL压缩数据库.

我正在尝试启用迁移,因此我可以在不擦除现有数据的情况下向EF模型添加新表.但是,当我运行"启用 - 迁移"时,我得到了

No context type was found in the assembly 'Project.Web'.
Run Code Online (Sandbox Code Playgroud)

如果我将启动项目设置为Project.DAL,则错误更改为

Could not load assembly 'Project.Web'. (If you are using Code First Migrations inside Visual Studio this can happen if the startUp project for your solution does not reference the project that contains your migrations. You can either change the startUp project for your solution or use the -StartUpProjectName parameter.)
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会出现这个错误或者我可以做些什么来修复它?

asp.net entity-framework connection-string data-access-layer entity-framework-5

33
推荐指数
1
解决办法
4万
查看次数

EF5获取此错误消息:无法检查模型兼容性,因为数据库不包含模型元数据

我有这个错误消息,每次运行应用程序时都会继续显示.我正在使用实体Framework 5: Code First

这是错误信息,

System.NotSupportedException: Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.
   at System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(InternalContext internalContext, ModelHashCalculator modelHashCalculator, Boolean throwIfNoMetadata)
   at System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata)
   at System.Data.Entity.Database.CompatibleWithModel(Boolean throwIfNoMetadata)
   at System.Data.Entity.DropCreateDatabaseIfModelChanges`1.InitializeDatabase(TContext context)
   at System.Data.Entity.Database.<>c__DisplayClass2`1.<SetInitializerInternal>b__0(DbContext c)
   at System.Data.Entity.Internal.InternalContext.<>c__DisplayClass8.<PerformDatabaseInitialization>b__6()
   at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
   at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
   at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c)
   at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
   at System.Data.Entity.Internal.InternalContext.Initialize()
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework entity-framework-5

32
推荐指数
5
解决办法
5万
查看次数

如何使用Entity Framework从数据库中仅更新一个表模型?

我有一个从db with Entity Framework生成的模型.当我对数据库进行任何更改时,我会从数据库更新模型以获取模型中的更改.但此更新适用于模型中包含的所有实体(表).

现在我在表Tab1中添加一个新列.我不想将数据库中的模型更新为我不希望包含在模型中的其他一些更改.我可以手动在实体Tab1的模型中添加新属性.然后它导致了映射错误.

所以我需要更新Model.Store表以包含新列.这意味着我只想更新模型Tab1.

我怎样才能做到这一点?

entity-framework entity-framework-4 entity-framework-4.1 entity-framework-5

31
推荐指数
2
解决办法
4万
查看次数