Tag: entity framework

如何使用默认的entity framework和默认日期值

在我的SQL Server数据库模式中,我有一个数据表,其日期字段包含默认值 CONVERT(VARCHAR(10), GETDATE(), 111) 这是手动将记录输入数据库时​​自动将日期插入新记录的理想选择。 我遇到的问题是,当使用entity framework并映射Date字段时,entity framework在实例化实体时插入默认值DateTime.Min。 我无法将Date字段映射到可以为空的DateTime,即DateTime ?,我也无法在Entity Designer的默认值中使用CONVERT或DateTime.Now.Today,因为它只接受硬编码的常量值。 我当然可以在创建对象时在C#中显式设置DateTime字段,可以在代码中显式地在部分类的构造函数中,甚至在保存更改事件期间。 有没有其他方法可以实现我想要的,而实际使用的是存储在数据库表中的默认值计算?

entity framework6代码优先function映射

我想将Entity Framework 6集成到我们的系统中,但是有问题。 我想使用Code First。 出于其他原因,我不想使用Database First * .edmx文件。 我使用属性映射[表],[列],这很好用 数据库有许多用户定义的函数,我需要在Linq To Entities查询中使用它们。 问题是: 我不能通过像[Table],[Column]这样的属性来映射函数。 只有1个属性可用[DbFunction],它需要* .edmx文件。 我可以在* .edmx文件中映射函数,但这意味着我不能使用实体的属性映射:[Table],[Column]。 必须在* .edmx或属性中填充映射。 我尝试通过以下代码创建DbModel并添加函数: public static class Functions { [DbFunction(“CodeFirstNamespace”, “TestEntity”)] public static string TestEntity() { throw new NotSupportedException(); } } public class MyContext : DbContext, IDataAccess { protected MyContext (string connectionString) : base(connectionString, CreateModel()) { } […]

entity framework将记录添加到多对多的映射表中

我有3张桌子, 1)客户(Id,Name,bla bla) 2)CustomerGroups(GroupId,GroupName) 3)CustomerInGroups(CustomerId,GroupId) using (var context = DataObjectFactory.CreateContext()) { context.Customers.Add(entity); context.SaveChanges(); return entity.Id; } 如何在CustomerInGroups中添加记录? EntityFramework不会为这样的多对多映射表生成实体 编辑: Customer和CustomerGroups中的Id列都设置为自动增量。 所以在我的CustomersGroup表中,我有 Id Name —————————- 1 Normal 2 VIP 我尝试这样做,因为其中一张海报建议: entity.CustomerGroups = new List { new CustomerGroup {Id = 2 } }; context.Customers.Add(entity); context.SaveChanges(); return entity.Id; 但是,当我这样做时,而不是像这样在映射表中创建一条记录: CustomerId GroupId —————————- 1 2 我得到的是 CustomerInGroups CustomerId GroupId […]

将连接字符串传递给entity framework6

我在类库中使用EF6(数据库优先) 当我按照向导并添加了我的表时,我选择不在app.config中存储连接字符串,并且我将发送连接字符串。 我以前没有这样做过。 通常我选择将连接字符串放在app.config文件中。 我现在完全难以理解我实际调用函数并将连接字符串传递给它。 以下是我希望从我的解决方案中获得的相关代码片段。 在app.config中 – EF自动添加了这个: 我自动生成的上下文类如下所示: //—————————————————————————— // // This code was generated from a template. // // Manual changes to this file may cause unexpected behavior in your application. // Manual changes to this file will be overwritten if the code is regenerated. // //—————————————————————————— namespace CervionFunctions.DatabaseModel { using System; […]

使用MVVM在TreeView中显示实体

我正在按照MVVM模式制作WPF应用程序。 在这我使用entity framework, 我的实体结构很简单,它有3个实体:部门,课程,书籍, 一个部门可以有很多课程,一门课程可以有很多书, 现在我想在树视图中显示这个,所以我在wpf中的输出应该是这样的, Department1 Course1 Book1 Book2 Course2 Book3 Department2 Course Book Department3 在我的ViewModel中我有EntityContext对象。 但我不知道如何在树视图中显示这一点。 我怎么能做到这一点。

linq到实体,where where子句在哪里? (内在哪里)

我有一个表与一对多映射到一个表,该表具有多个到另一个表的映射。 我想做以下事情: var results = context.main_link_table .Where(l => l.some_table.RandomProperty == “myValue” && l.some_table.many_to_many_table .Where(m => m.RandomProperty == “myValue”)); 我怎样才能做到这一点? 第一部分可以工作,但是在没有’内部WHERE’的情况下尝试它时,我无法访问many_to_many_table的属性,但“内在的地方”显然无法编译。 我基本上想要实现类似下面的SQL查询: SELECT * from main_link_table INNER JOIN some_table AS t1 ON t1.association = main_link_table.association INNER JOIN many_to_many_table AS t2 ON t2.association = some_table.association WHERE t1.RandomProperty = ‘MyValue’ AND t2.RandomProperty = ‘MyValue’ 它看起来很简单,但我无法找到一种方法来实现它在一行linq中 – 使用多行来实现所需的效果返回太多的结果,我最终不得不循环它们。 我也尝试过这样的东西: […]

LINQ to Entities相当于sql“TOP(n)WITH TIES”

我最近在sql server中一直在寻找LINQ等同于WITH TIES ,我遇到了一些事情,这些事情无法发挥作用。 我知道这个问题之前被问过并且有一个已接受的答案,但它并不像领带那样有效 。 使用GroupBy()的解决方案不会出现TOP(3) WITH TIES预期结果,考虑到由{3 2 2 1 1 0}组成的数据集,结果集将是{3 2 2 1 1} ,其应该是{3 2 2} 使用以下示例数据(取自此问题) : CREATE TABLE Person ( Id int primary key, Name nvarchar(50), Score float ) INSERT INTO Person VALUES (1, ‘Tom’,8.9) INSERT INTO Person VALUES (2, ‘Jerry’,8.9) INSERT INTO Person VALUES (3, ‘Sharti’,7) INSERT […]

在Entity Framework中的运行时期间更改数据库,而不更改Connection

我有一台服务器托管50个具有相同模式的数据库,我想在下一版本中开始使用Entity Framework。 我不需要为每个数据库建立新连接。 一个连接的权限可以与所有50个数据库通信,并且对于数据管理和速度(这是一个WebAPI应用程序)我不希望每次与每个数据库通信时实例化新的EF上下文,如果我不必,除非当然每次请求到达服务器时都会发生这种情况,那就没什么大不了的。 我真正需要的是能够更改USE [databasename]命令,我假设最终从EF发送到服务器。 有没有办法在代码中完成此操作? EF是否在Context中保持读/写属性,该属性引用可以在调用SaveChanges()等之前动态更改的数据库名称。 谢谢!!! 短发

无法将类型’System.Data.EntityState’隐式转换为’System.Data.Entity.EntityState’。 存在显式转换(您是否错过了演员?)

我在使用entity framework时在asp.net中收到此错误:“无法将类型System.Data.EntityState隐式转换为System.Data.Entity.EntityState 。存在显式转换(您是否错过了转换?)” 这是片段: foreach (OrderLine line in order.OrderLines) { context.Entry(line.Product).State = System.Data.EntityState.Modified; } 请建议我该怎么做才能解决错误。

序列化我的实体时Json.Net意外字符(“\”)

我正在使用优秀的Json.Net库来序列化由entity framework生成的实体。 我使用以下代码来执行此操作: using (MyVoucherEntities context = new MyVoucherEntities()) { List list = context.MyObjects.ToList(); string json = JsonConvert.SerializeObject(list); } 一切顺利我的意思是,对象被正确序列化除了一个人认为:它添加了转义字符“\”,这使得我在客户端进行反序列化时会遇到噩梦。 [ { \”$id\”: \”1\”, \”CreationDate\”: \”\\\/Date(1293186324257+0000)\\\/\”, \”ImageUrl\”: \”http:\/\/www.google.com\”, \”Title\”: \”Here is a title\” } ] 有谁知道为什么以及如何摆脱这些转义字符斜杠“\”?