标签: entity-framework-5

Fluent Api将实体框架多列作为主键

这些是我的简化域类.

public class ProductCategory
{
    public int ProductId { get; set; }
    public int CategoryId { get; set; }

    public virtual Product Product { get; set; }
    public virtual Category Category { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
} 

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? ParentCategoryId { get; set;} 
} …
Run Code Online (Sandbox Code Playgroud)

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

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

DbContext AutoDetectChangesEnabled设置为false检测更改

我有点难过.根据我的阅读设置DbContext.AutoDetectChangesEnabled,false应该禁用需要调用的更改跟踪DbContext.DetectChanges,以便识别要发送到数据库的更改.

但是,从我的下面的日志中可以清楚地看到,dbContexts更改跟踪器正在注册更改,即使设置为false也是如此.

我错过了什么吗?

实体框架版本:5.0.0.0

DbContext类

public class ProjectContext : DbContext {
    public DbSet<Project> Projects {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

控制器类

private ProjectContext db = new ProjectContext();

public method(){
    Project p = new Project("uniqueName");
    db.Configuration.AutoDetectChangesEnabled = false;
    db.Projects.Add(p);
    DebugChangeTracker();
    db.SaveChanges();

    db.Projects.First().ProjectName = "a differentName!";
    DebugChangeTracker();
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

记录方法

    private void DebugChangeTracker()
    {
        var path = "C:\\mypath\\";
        path = path + Util.GetMsSinceEpoch().ToString() + "changeTracker.log";

        using (StreamWriter sw = new StreamWriter(path))
        {
            var changeTracker = db.ChangeTracker;
            var entries = changeTracker.Entries(); …
Run Code Online (Sandbox Code Playgroud)

entity-framework dbcontext entity-framework-5

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

无法在类库中启用Entity Framework的迁移

我刚刚加入了EF 5并使用了他们的代码优先迁移工具,但是当我尝试启用迁移时,我似乎遇到了错误.

我输入Enable-Migrations包管理器控制台,然后说

没有从当前项目中找到的DbContext派生的类.
编辑生成的Configuration类以指定启用迁移的上下文.
为项目MyApp.MvcUI启用了代码优先迁移.

然后它在我的MvcUI项目中创建一个Migrations文件夹和一个Configuration类.事实上,我的DbContext存在于名为MyApp.Domain的类库项目中.它应该在该项目中完成所有这一切,并且应该没有问题找到我的DbContext.

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

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

ASP.NET SimpleMembershipProvider的自动迁移

所以我尝试使用我的新MVC 4项目进行自动迁移,但不知何故它无法正常工作.我一步一步地关注这篇博文.

我已将更改添加到UserProfile帐户模型(NotaryCode字段):

[Table("UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public int NotaryCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我在包管理器控制台上写了enable-migrations一个Configuration类出现(继承自DbMigrationsConfiguration<Web.Models.UsersContext>)然后我将类填充为:

public Configuration()
{
    AutomaticMigrationsEnabled = true;
}

protected override void Seed(Atomic.Vesper.Cloud.Web.Models.UsersContext context)
{
    WebSecurity.InitializeDatabaseConnection(
            "DefaultConnection",
            "UserProfile",
            "UserId",
            "UserName", autoCreateTables: true);

    if (!Roles.RoleExists("Atomic"))
        Roles.CreateRole("Atomic");

    if (!Roles.RoleExists("Protocolista"))
        Roles.CreateRole("Protocolista");

    if (!Roles.RoleExists("Cliente"))
        Roles.CreateRole("Cliente");

    string adminUser = "randolf";

    if (!WebSecurity.UserExists(adminUser))
        WebSecurity.CreateUserAndAccount(
            adminUser, …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-4 ef-migrations entity-framework-5

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

EF5迁移更新 - 数据库 - 脚本错误

我一直在使用带有试用许可证的Visual Studio 2012 RC,没有任何问题.我昨天购买了Visual Studio 2012 Professional,安装了最新版本,并安装了Update 1.

我有一个我已经工作多年的解决方案/项目.它有许多迁移.我跑了第一个add-migration TableX_NewFieldupdate-database -sourcemigration:TableX_PreviousNewField最新版本.

他们都跑了没有问题.

然后我跑了update-database -script -sourcemigration:TableX_PreviousNewField并收到以下内容:

PM> update-database -script -sourcemigration:TableX_PreviousNewField
Applying code-based migrations: [201301151003149_TableX_NewField].
Applying code-based migration: 201301151003149_TableX_NewField.
System.Runtime.InteropServices.COMException (0x8004000C): User canceled out of save dialog (Exception from HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED))
  at EnvDTE.ItemOperations.OpenFile(String FileName, String ViewKind)
  at System.Data.Entity.Migrations.Utilities.DomainDispatcher.OpenFile(String fileName)
  at System.Data.Entity.Migrations.Utilities.DomainDispatcher.OpenFile(String fileName)
  at System.Data.Entity.Migrations.Extensions.ProjectExtensions.NewSqlFile(Project project, String contents)
  at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
  at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
User canceled out of save dialog (Exception from HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED))
Run Code Online (Sandbox Code Playgroud)

我已经运行了Windows更新.使用NuGet检查更新.重新启动了我的电脑.仍然有错误.

entity-framework ef-migrations entity-framework-5

43
推荐指数
1
解决办法
8334
查看次数

批量更新/删除EF5

使用(实体框架)EF5处理批量更新的最佳方法是什么?我有两个我感兴趣的特殊情况:

  1. 更新一个字段(例如UpdateDate)以获取100到100.000 Id之间的列表(List),这是主键.分别调用每个更新似乎需要很多开销并且需要很长时间.

  2. 在单个go中插入多个,也在100到100.000之间的相同对象(例如用户).

有什么好建议吗?

entity-framework batch-processing entity-framework-5

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

EntityFramework 5使用dll版本4.4.0.instead 5.0

我有基于.NET 4.0的项目,但我需要在我的解决方案中使用EntityFramework 5.所以我从NuGet安装它.

之后,我将目标框架更改为.NET 4.5(我正在使用VS 2012)并重建项目.

但在参考文件夹中,我看到该项目使用EntityFramework.dll版本4.4.0.0.

何我可以使用较新版本的EntityFramework?

在web.config中

<compilation debug="true" targetFramework="4.5">
    <assemblies>
       <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </assemblies>
</compilation>
Run Code Online (Sandbox Code Playgroud)

asp.net-4.5 entity-framework-5

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

'System.Data.Entity.Internal.AppConfig'的类型初始值设定项引发了异常

我在MVC 4 aspnet网站上使用EF5.在本地,一切正常,但当我将其发布到IIS并尝试进入时,我得到错误

"'System.Data.Entity.Internal.AppConfig'的类型初始化程序引发了异常."

详细例外

为entityFramework创建配置节处理程序时出错:在应用程序配置中多次指定DbContext类型'GdpSoftware.Server.Data.GdpSoftwareDbContext,GdpSoftware.Server.Data'的配置.每个上下文只能配置一次.(E:\ App\web.config第104行)

我在StackOverflow中检查了之前的问题,我已经通过Nuget EntityFramework卸载并重新安装,并检查每个项目中对它的每个引用都是EF5.我还检查了每个项目中选定的框架是4.5.

任何想法,可能导致问题的原因是什么?谢谢!吉列尔莫.

web.config中

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
  <connectionStrings>
    <add name="GdpSoftwareConnectionString" connectionString="Persist Security Info=False;User ID=user;Password=password;Initial Catalog=databasename;Data Source=server" providerName="System.Data.SqlClient" />
    <add name="GdpSoftware.Server.Data.GdpSoftwareDbContext" connectionString="GdpSoftware.Server.Data.GdpSoftwareDbContext_ConnectionString" providerName="System.Data.SqlClient"/>
    <add name="GdpSoftware.Server.Ui.Web.Models.UsersContext" connectionString="GdpSoftware.Server.Ui.Web.Models.UsersContext_ConnectionString" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" /> …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc entity-framework asp.net-mvc-4 entity-framework-5

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

从实体框架5升级到6

在将项目从使用Entity Framework 5升级到Entity Framework 6之后(虽然NuGets更新功能)我在生成的Entities类上收到以下错误:

错误1命名空间"System.Data"中不存在类型或命名空间名称"Objects"
(您是否缺少程序集引用?)

我知道这是因为命名空间已经改变,我可以通过更改我的导入来手动修复错误: using System.Data.Objects;using System.Data.Objects.DataClasses; To: using System.Data.Entity.Core.Objects;

但是生成文件所以我需要在每次之后重新应用此修复程序Update model from Database.有没有额外的东西可以让EF生成没有这个错误的模型.

c# entity-framework ef-database-first entity-framework-5 entity-framework-6

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

是否可以使用Entity Framework Code First设置唯一约束?

我想在表中强制使用唯一约束,我正在使用Entity Framework Code-First.

是否可以使用EF 6添加唯一约束,因为我相信早期版本是不可能的.

asp.net-mvc entity-framework entity-framework-5 entity-framework-6

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