Tag: entity framework 6

entity framework:提供程序未返回providermanifest实例

entity framework6.0.1我的App.config: 和使用EF的MyDataContext类: public partial class MyDataContext: DbContext { static MyDataContext() { Database.SetInitializer(null); } public MyDataContext() : base(“MyDataContext”) { } } 创建了一个上下文,但当我尝试获取任何实体或对数据库执行任何操作时,它会抛出exception using (var db = new MyDataContext()) { var exists = db.Database.Exists(); } 例外是 System.Data.ProviderIncompatibleException: The provider did not return a providermanifest instance StackTrace: in System.Data.Common.DbProviderServices.GetProviderManifest(String manifestToken) in System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest) in System.Data.Entity.DbModelBuilder.Build(DbConnection […]

如何从Entity Framework 6中的Auditlog实体获取id

我知道那里有几个类似的post,但我找不到任何解决这个问题的方法。 我想在Entity Framework 6中添加,更改或删除实体(软删除)时添加(某种)AudioLog。我已经覆盖了SaveChanges,因为我只想为EntityStates添加,修改或删除的日志条目,我在第一次调用SaveChanges之前获取列表。 问题是,因为我需要记录已执行的操作,我需要检查实体的EntityState。 但是在调用SaveChanges之后,所有条目的EntityState都是Unchanged。 public override int SaveChanges() { using (var scope = new TransactionScope()) { var modifiedEntries = ChangeTracker.Entries() .Where(e => e.State == EntityState.Added || e.State == EntityState.Deleted || e.State == EntityState.Modified) .ToList(); int changes = base.SaveChanges(); foreach (var entry in modifiedEntries) { ApplyAuditLog(entry); } base.SaveChanges(); scope.Complete(); return changes; } } private […]

如何在ASP.NET MVC 5中列出具有角色名称的用户

我有ASP.NET MVC 5网站的默认项目模板,我试图列出具有角色名称(而不是ID)的所有用户。 查询是: db.Users.Include(u => u.Roles).ToList() 然后我想用以下内容打印角色名称: @string.Join(“, “, user.Roles.Select(r => r.RoleId)) 问题是我只能访问RoleId ,而不能访问存储Name和其他属性的Role类。 我可以运行另一个select来获取所有角色,然后将其用作查找。 或直接在查询中写一个连接? 我不确定如何,因为我无法访问具有绑定用户和角色的IdentityUserRole实体的表。 问题的根源似乎是IdentityUserRole (不是Role )的Roles集合, RoleId包含RoleId和UserId 。 public class IdentityUserRole { public virtual TKey RoleId { get; set; } public virtual TKey UserId { get; set; } } 我认为如果想在EF中建立N对N关系,他们应该直接收集Roles ,然后重写OnModelCreating并指定关系。 这种方法似乎使从一个对象浏览对象变得复杂。 为什么他们决定将IdentityUserRole作为额外实体包含在内? 能够在关系中添加额外数据吗? 代价是无法从用户导航到角色?

DropCreateDatabaseIfModelChanges EF6导致System.InvalidOperationException:支持上下文的模型已更改

迁移到Entity Framework 6后,在构建服务器上执行unit testing时出错。 我正在使用DropCreateDatabaseIfModelChanges初始化程序。 当我将其更改为MigrateDatabaseToLatestVersion一切正常,但我想坚持使用前一个初始化程序。 我得到的错误是: System.InvalidOperationException:System.InvalidOperationException:自创建数据库以来,支持“AppContext”上下文的模型已更改。 考虑使用Code First Migrations更新数据库( http://go.microsoft.com/fwlink/?LinkId=238269 )。 哪个是正确的,它已更改,但使用DropCreateDatabaseIfModelChanges初始值设定项时,应重新创建它。 有任何想法吗? EF在App.config中配置。 这是相关部分:

无法确定“System.Data.Sqlite.SqliteFactory”类型的提供程序工厂的提供程序名称

我想在我的web api项目中使用sqliteentity framework,但它始终无法正常工作, 这是我的发展环境。 1.Visual studio 2013,.net framework 4.5 sqlite包的版本是1.0.97,我在下面安装了包 system.data.sqlite,system.data.sqlite.ef6,system.data.sqlite.linq EntityFramework是6.1.3 这是我得到的例外 无法确定“System.Data.SQLite.SQLiteFactory”类型的提供程序工厂的提供程序名称。 确保在应用程序配置中安装或注册了ADO.NET提供程序 这是我的webconfig 我可以通过visual studio工具中的“连接数据库”连接sqlite数据库文件,我也可以先用代码生成实体。 但我无法获得数据正常 这是我的代码 public partial class Sqlite : DbContext { public Sqlite() : base(“name=Sqlite”) { } public virtual DbSet AuthorizationLogs { get; set; } public virtual DbSet Checksums { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { […]

entity framework查询性能与原始SQL执行的extrem不同

我有一个关于Entity Framework查询执行性能的问题。 架构 : 我有这样的表结构: CREATE TABLE [dbo].[DataLogger] ( [ID] [bigint] IDENTITY(1,1) NOT NULL, [ProjectID] [bigint] NULL, CONSTRAINT [PrimaryKey1] PRIMARY KEY CLUSTERED ( [ID] ASC ) ) CREATE TABLE [dbo].[DCDistributionBox] ( [ID] [bigint] IDENTITY(1,1) NOT NULL, [DataLoggerID] [bigint] NOT NULL, CONSTRAINT [PrimaryKey2] PRIMARY KEY CLUSTERED ( [ID] ASC ) ) ALTER TABLE [dbo].[DCDistributionBox] ADD CONSTRAINT […]

EF6 Code First具有通用存储库和dependency injection和SoC

经过大量阅读并尝试使用Entity Framework最新稳定版(6.1.1)。 我正在阅读很多关于是否一般使用DbContext或EF存储库的矛盾,因为它的DbContext已经提供了一个存储库并且DbSet UoW ,开箱即用。 让我首先解释一下我的解决方案在项目方面所包含的内容,然后我将回到这个矛盾中。 它有一个类库项目和一个asp.net-mvc项目。 类lib项目是数据访问,并且为Code First启用了Migrations 。 在我的类lib项目中,我有一个通用的存储库: public interface IRepository where TEntity : class { IEnumerable Get(); TEntity GetByID(object id); void Insert(TEntity entity); void Delete(object id); void Update(TEntity entityToUpdate); } 以下是它的实现: public class Repository where TEntity : class { internal ApplicationDbContext context; internal DbSet dbSet; public Repository(ApplicationDbContext context) { this.context = […]

为什么在Visual Studio 2015专业版中使用Entity Framework进行映射无效

我创建了一个Entity Framework的上下文,如下所示:using System; using System.Data.Entity; using System.Data.Entity.ModelConfiguration.Conventions; using System.Collections.Generic; using System.Linq; using System.Web; namespace UniversityApp.Models { public class ProfDb : DbContext { public DbSet Professors { get; set; } public DbSet Students { get; set; } } } 我正在使用VS 2015 Professional。 然后我去View => Server Explorer => Add Connection => Microsoft Sql Server => In Data […]

project.Models.tableName:字段pvid必须是字符串或数组类型,最大长度为“20”

当我尝试在数据库中添加新条目时遇到以下exception错误: db.patient_visit.Add(pv); db.SaveChanges(); project.dll中出现“System.InvalidOperationException”类型的exception,但未在用户代码中处理 附加信息:project.Models.tableName:字段pvid必须是字符串或数组类型,最大长度为“20”。 在此之前,我的模型自动设置如下,因为我使用现有数据库进行了代码优先迁移。 [Key] [StringLength(20)] public string pvid { get; set; } 从逻辑上讲,它看起来已经在范围内了。 但是为了尝试,我尝试将其更改为下面的代码,并进行了添加迁移。 然后,在Up()方法中,它为空。 这是否意味着修改无法识别? 因为当我再次尝试运行项目时,我遇到了与上面相同的错误。 [Key] [MaxLength(20), MinLength(12)] public string pvid { get; set; } 然后,当我在我的查询中放置断点时,我看到: InnerException:null 消息:数据读取器与指定的“project.Models.tableName”不兼容。 “columnName”类型的成员在数据读取器中没有相应的具有相同名称的列。 我的查询有问题吗? ChargeVM objDetails = new ChargeVM(); var query3 = db.Database.SqlQuery(“SELECT MAX(CAST(SUBSTRING(pvid, 3, 10) AS int)) FROM patient_visit”); if (query3 != null) […]

在SQL Azure上调用exec sp并使用EF6抛出时,存储过程正常工作

我有这个存储过程 CREATE PROCEDURE [dbo].[sp_RebuildIndexes] AS BEGIN DECLARE @TableName varchar(255) DECLARE TableCursor CURSOR FOR (SELECT ‘[‘ + IST.TABLE_SCHEMA + ‘].[‘ + IST.table_name + ‘]’ AS [TableName] FROM INFORMATION_SCHEMA.TABLES IST WHERE IST.TABLE_TYPE = ‘BASE TABLE’) OPEN TableCursor FETCH NEXT FROM TableCursor INTO @TableName WHILE @@fetch_status = 0 BEGIN PRINT (‘Rebuilding Indexes on ‘ + @TableName) BEGIN TRY […]