Tag: entity framework

从结构化数据构建JSON层次结构

C#| .NET 4.5 | entity framework5 我有一个以ID,ParentID,Nameforms从SQL查询返回的数据。 我想获取该数据并将其解析为Hierarchical JSON字符串。 到目前为止,这似乎是一项艰巨的任务,而不是应有的任务。 因为我正在使用Entity,所以数据作为IEnumerable很好地回馈给我。 现在我相信我只需要某种forms的递归,但我不确定从哪里开始。 任何帮助表示赞赏。 数据返回为 id parentId name 1 1 TopLoc 2 1 Loc1 3 1 Loc2 4 2 Loc1A 代码是 public static string GetJsonLocationHierarchy(long locationID) { using (EntitiesSettings context = new EntitiesSettings()) { // IEnumerable of ID,ParentID,Name context.GetLocationHierarchy(locationID); } } 最终的结果我希望是这样的: { “id”: “1”, “parentId”: […]

OData $ expand,DTO和Entity Framework

我有一个基本的WebApi服务设置,数据库首先设置了EF DataModel。 我正在运行WebApi,EF6和WebApi OData包的每晚构建。 (WebApi:5.1.0-alpha1,EF:6.1.0-alpha1,WebApi OData:5.1.0-alpha1) 该数据库有两个表:产品和供应商。 产品可以有一个供应商。 供应商可以拥有多种产品。 我还创建了两个DTO类: public class Supplier { [Key] public int Id { get; set; } public string Name { get; set; } public virtual IQueryable Products { get; set; } } public class Product { [Key] public int Id { get; set; } public string Name { get; […]

entity framework中的提供者连接字符串

如果您正在使用对象上下文数据模型(使用EDMX文件),则在创建它时,您可能希望在配置文件中指定连接字符串。 遗憾的是,连接字符串不是公共连接字符串,因为它包含一些实体连接所需的东西。 MySql连接示例: 我遇到的问题是此连接字符串包含参数“provider connection string”中提供程序的连接字符串。 出于特定原因,我需要创建一个与实体模型无关的新MySqlConnection。 为了创建MySqlConnection,我需要为它提供mysql连接字符串 – 这是实体模型的提供者连接字符串,我知道我需要的连接字符串始终是实体模型的相同连接字符串。 但是如何获得提供程序连接字符串programmaticaly? 我被困在浏览模型实例但没有成功…… 下列: ModelInstance.Connection.ConnectionString 包含类似“name = TestBotEntities”的内容,甚至不包括整个连接字符串。 所以我尝试过: ConfigurationManager.ConnectionStrings[“MyDbEntities”].ConnectionString 但是那个包含整个实体连接字符串,我只是不知道如何解析它,如何只从它获取提供者连接字符串。

如何在unit testing中使用Moq和DbFunction来防止NotSupportedException?

我目前正在尝试对通过entity framework运行的查询运行一些unit testing。 查询本身在实时版本上运行没有任何问题,但unit testing总是失败。 我把它缩小到我对DbFunctions.TruncateTime的使用,但我不知道如何通过这种方式来获取unit testing来反映实时服务器上发生的情况。 这是我正在使用的方法: public System.Data.DataTable GetLinkedUsers(int parentUserId) { var today = DateTime.Now.Date; var query = from up in DB.par_UserPlacement where up.MentorId == mentorUserId && DbFunctions.TruncateTime(today) >= DbFunctions.TruncateTime(up.StartDate) && DbFunctions.TruncateTime(today) up.EndDate); return this.RunQueryToDataTable(query); } 如果我注释掉带有DbFunctions的行,则测试全部通过(除了检查只运行给定日期的有效结果的那些)。 有没有办法可以提供在这些测试中使用的DbFunctions.TruncateTime的模拟版本? 本质上它应该只返回Datetime.Date,但在EF查询中不可用。 编辑:这是使用日期检查失败的测试: [TestMethod] public void CanOnlyGetCurrentLinkedUsers() { var up = new List { this.UserPlacementFactory(1, 2, […]

entity framework:将tinyint映射到布尔值

默认情况下,Entity Framework将tinyint映射到byte。 我尝试将生成后的基础类型更改为布尔值,但是出现编译错误 指定的成员映射无效。 成员的类型’Edm.Boolean [Nullable = False,DefaultValue =]’… 这可能在4.0? 我不打算将tinyint列用作布尔值。 这是由另一个使用hibernate的团队自动完成的,显然这样做是为了兼容mysql。 很明显,tinyint的值大于2.我正在寻找一种方法来映射它,以便任何接受1都是假的,或者任何接受为0都是真的。 要不会对我有用 有没有办法将各种类型的翻译器插入EF?

如何在EF4实体上提取属性的数据库表和列名?

我正在为使用EF4进行数据访问层的应用程序编写审计组件。 我能够非常轻松地确定哪些实体已被修改,并且通过ObjectStateEntry对象,我可以提取已修改的原始值,当前值,实体名称和属性名称,但我还想提取原始表格和SQL Server中使用的列名和列名(因为它们并不总是与模型的实体和属性名称匹配) 有谁知道这样做的好方法? 它甚至可能吗? 映射显然存储在MSL中,但我无法找到以编程方式访问这些映射的方法。

无法加载文件或程序集Microsoft.Extensions.DependencyInjection.Abstractions,Version = 1.1.0.0

更新到新包Microsoft.EntityFrameworkCore.SqlServer 1.1.2后,我尝试创建DBContext时出错: System.IO.FileLoadException发生HResult = 0x80131040 消息=无法加载文件或程序集’Microsoft.Extensions.DependencyInjection.Abstractions,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = adb9793829ddae60’或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)Source = Microsoft.EntityFrameworkCore StackTrace:位于C:\ src \ backend \中Services.Infrastructure.Data.SqlServerDbContext..ctor(DatabaseOptions databaseOptions)的Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions选项) Packages \ Services.Infrastructure \ Data \ SqlServerDbContext.cs:第16行,位于C:\ src \ backend \ Modules \ Translations \ Translations.Api \ Data \ TranslationsDbContext.cs中的Translations.Api.Data.TranslationsDbContext..ctor(DatabaseOptions databaseOptions) :第16行 我的基础DbContext public class SqlServerDbContext : DbContext { private readonly DatabaseOptions _databaseOptions; […]

MVC 4 – 多对多关系和复选框

我正在使用ASP.NET MVC 4和Entity Framework。 在我的数据库中,我有一个表Subscription ,表示对公共传输的订阅。 这个订阅可以提供对几个公共交通公司的访问(因此订阅可能有1,2,3,……公司),然后这些表之间是多对多关系(我之间有一个中间表)。 我想允许通过一个页面创建订阅,该页面将包含一个字段的订阅金额和可用的公司复选框。 每个复选框代表一个现有公司(存储在我的数据库中的公司)。 有关如何做到这一点的任何想法? 我已经阅读了这个ASP.NET MVC多重复选框,但它并没有真正帮助。 编辑:这是我的表格图。

MYSQL中不存在规范函数“EntityFunctions.TruncateTime”

我正在尝试运行此查询: DateTime DDate=DateTime.Today; //Today’s date without Time var v= db.measurements.Where(m => EntityFunctions.TruncateTime(m.InDate) == DDate); 它只返回这两个日期相等的对象,忽略时间部分。 但我收到: {“FUNCTION [数据库] .TruncateTime不存在”} 堆栈跟踪: at MySql.Data.MySqlClient.MySqlStream.ReadPacket() at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId) at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId) at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) at MySql.Data.MySqlClient.MySqlDataReader.NextResult() at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) at MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) […]

‘System.Data.Entity.Internal.AppConfig’的类型初始值设定项在子网站上引发了一个例外

我有2个网站,一个是另一个的子目录,但是是一个Application ex:/ root&/ root / Services 他们都使用Entity Framework 6.x,但子网站正在抛出System.Data.Entity.Internal.AppConfig的类型初始化程序’引发了一个exception,因为它看起来因为嵌套而看到同一个EF数据库提供程序的许多条目web.config中 有没有办法清除提供程序集合,以便我不会收到此错误? 我试过放入哪个没效果。 如果我注释掉提供者部分它是有效的 但我不想这样做,因为不是每个环境都会有嵌套网站。 并且NuGet倾向于将其重新插入。我可以通过编程方式进行调整吗? 这是完整的exception和堆栈跟踪 System.TypeInitializationException was unhandled by user code HResult=-2146233036 Message=**The type initializer for ‘System.Data.Entity.Internal.AppConfig’ threw an exception.** Source=EntityFramework TypeName=System.Data.Entity.Internal.AppConfig StackTrace: at System.Data.Entity.Internal.AppConfig.get_DefaultInstance() at System.Data.Entity.Internal.LazyInternalConnection..ctor(String nameOrConnectionString) at System.Data.Entity.DbContext..ctor(String nameOrConnectionString) at co.Repository.Data.coContext..ctor() in coModel.Context.Generated.cs:line 23 at co.Repository.RepositoryBase`1.SingleOrDefault(Expression`1 predicate) in co.Repository\RepositoryBase.cs:line 13 at UserFactory.GetOneByUserName(String siteCode, […]