Tag: entity framework 4

SaveChanges()之前新添加的实体的ID

我正在向我的数据库添加一个实体,如下所示: public TEntity Add(TEntity entity) { return (TEntity)_database.Set().Add(entity); } 但是, DbSet.Add方法没有返回带有Id等的新添加的实体,它只是将我传入的对象返回到我的Add方法。 它是否应该将包括Id的完整新实体传回给我,或者在调用SaveChanges()之前是否无法获取Id ?

entity framework中的唯一约束

如何将实体(entity framework)中的某些属性设置为唯一? 一种可能性是将其作为主键,但这不是我想要的。

在LINQ to Entities查询中不能使用ToString()

所以我有以下代码: string searchQuery = collection[“query”]; var srmas = ( from SRMAs in db.SRMAs join SRMAStatus in db.SRMAStatus on SRMAs.Id equals SRMAStatus.Id join PurchaseOrders in db.PurchaseOrders on SRMAs.PONumber equals PurchaseOrders.PONumber join Suppliers in db.Suppliers on PurchaseOrders.SupplierID equals Suppliers.SupplierID join SRMADetails in db.SRMADetails on SRMAs.Id equals SRMADetails.SRMAId where ids.Contains(SRMAs.Status) && ( searchQuery.Contains(PurchaseOrders.suppliersOrderNumber) || searchQuery.Contains(SRMAs.PONumber.ToString()) ) select new […]

使用Entity Framework执行简单查询时出现严重的性能问题

我有一个相当通用的CRUD webapp,它根据几个数据库表的内容动态生成页面。 我正在使用Entity Framework 4.0将这些数据从数据库中提取出来,但是我遇到了严重的性能问题。 我已经设法迭代到一个足够包含的问题,我可以在下面详述。 我有一个包含页面表单列表(~200)的表。 每个表单都有一个或多个字段 (总共约4000个),每个字段可能有一些参数 (总共约16000个)。 我在下面附上了我的模型的截图: 关联的实体对象如下: public class Form { public int FormID { get; set; } public string FormName { get; set; } public IList FormFields { get; set; } } public class FormField { public int FieldID { get; set; } public string FieldName { get; set; […]

查看EF4生成的查询?

LINQ-to-SQL有几种方法,包括可视化器加载项,用于从IQueryable查看生成的SQL。 我找不到Entity Framework 4的等价物。在StackOverflow上没有任何东西,没有博客。 怎么做? 我希望能够在代码中完成它而不必实际执行查询只是为了查看它。 谢谢!

错误:序列化Entity Framework类

public IList SearchEvents(DateTime fromDate, DateTime toDate, int categoryId, string eventName ) { var query = context.Events.Include(“City”).Where(e => e.EventCategoryID == (categoryId = fromDate.Month) && (e.EndDate.Value.Month = fromDate.Day) && (e.EndDate.Value.Day = fromDate.Year) && (e.EndDate.Value.Year <= toDate.Year) && string.IsNullOrEmpty(eventName)? eventName.Contains(e.EventName): eventName.Contains(eventName)); return query.ToList(); } public JsonResult SearchEvents(string from,string to,int categoryId, string eventName) { DateTime frmDate= Convert.ToDateTime(from); DateTime toDate […]

EF代码首先列出而不创建表

我正在用一个实体创建一个非常简单的EF4代码第一个项目。 public class Activity { public Guid Id { get; set; } public string Description { get; set; } public List DateDone { get; set; } public Activity() { if(DateDone==null) DateDone = new List(); } } 我重建我的项目,然后运行MVC3应用程序并生成数据库(确认,我已添加和删除列),我的数据是种子(当我修改种子数据时它在屏幕上更改) 我能够: var activity = db.Activities.Find(id); activity.DateDone = DateTime.Now; db.SaveChanges(); 但是数据没有保存。 我检查了数据库,因为只有一个表(Activity),它有所有相应的字段。 我希望它应该有第二个表,ActivityDateDone有两个字段,ActivityGuid和DateDone。 我在做这项工作时失踪了什么?

如何克隆POCO实体并添加到上下文

我正在使用EF4,我已经使用我的数据库结构中的代理创建了POCO对象。 我有一个POCO(对象),它与其他实体有很多关系。 我使用DataContractSerializer和BinaryFormatter创建了对象的深层副本,并将其称为clonedObject。 用于克隆的函数是: public T CloneProxy(T source) { var dcs = new System.Runtime.Serialization .DataContractSerializer(typeof(T)); string filePath = “Initiative.txt”; using (FileStream file = new FileStream(filePath, FileMode.Create)) { (new BinaryFormatter()).Serialize(file, source); } context.CreateProxyTypes(new Type[] { typeof(Initiative) }); using (FileStream file = new FileStream(filePath, FileMode.Open)) { return (T)(new BinaryFormatter()).Deserialize(file); } } 现在我有了clonedObject,如何将其添加到上下文中? 如何将其添加到数据库? 我的目标(只是给你一个关于POCO倡议的想法): Initiative { InitI […]

更新属性时,entity framework会遍历所有记录(60,000!)

我试图为POCO对象设置单个属性的值,它看起来像Entity正在检索最初从中检索POCO对象的数据库表中的每个记录。 这是代码: public void DeleteFile(int fileid) { var context = GetContext(myTrans, false); FILE pocofile = (from f in context.FILES.All() where f.File_Id == fileId select f).FirstOrDefault(); // the following line causes a retrieve of 60,000 records pocofile.State_Id = Global.DeletedStateId // global constant // additional code that is eventually reached after about 10 minutes } 我们有一个FILES表,它有一个映射到STATE表的State_Id列。 因此,当我尝试在上面设置State_Id属性时,似乎将第一个文件设置为ok,但是通过它在FILE […]

如何附加在创建/更新或检测到表中的更改时执行的其他操作?

我正在使用Entity Framework,当我在表中插入或更新Row时,我想执行其他操作。 不仅是来自数据库的存储过程而且是代码中的实际function – 优选基于事件。 (异步执行)两种方案都应该触发向处理程序发送一些消息或以其他方式启用函数的执行。 1)创造 var Row = DbContext.Table.GetById(Id); Row.SomeColumn = newValue; DbContext.SaveChanges(); 2)更新 var Row = new Row(valOfColumn1, …); DbContext.Table.AddObject(Row); DbContext.SaveChanges(); 在你回答之前 : 在执行当前更新和插入时查找位置不包括将来应该始终与执行所述额外function相关联的用法。 建立一个应该总是使用专用函数创建或更新表不是一个选项,因为我需要假设人们不会意识到使用提到额外function的必要性。