Tag: entity framework

TransactionScope,在sql profiler上开始事务?

我需要在事务上下文中做这样的事情 using(var context = new Ctx()) { using (TransactionScope tran = new TransactionScope()) { decimal debit = 10M; int id = 1; var data = context.Cashier .Where(w => w.ID == id) .Select(s => new{ s.Money }) .Single(); Cashier cashier = new Cashier(){ ID = id }; context.Cashier.Attach(cashier); cashier.Money = data.Money – debit; context.Entry(cashier).Property(p => p.Money […]

使用defaultValue时,如何在Entity框架中获取插入实体的Id?

有没有办法使用defaultValue发送属性但是用数据库计算结果更新它? 数据库中有一个触发器,对于输入-1,触发一个计算新值的过程。 如何获得价值? var x = new Stuff(); db.Stuff.AddObject(x); db.SaveChanges(); return x.ID //gives -1, but the computed value should be different.

entity framework是否具有来自Linq2Sql(ObjectContext.CreateQuery ?)的等效DataContext.GetTable

我正在寻找entity framework中的DataContext.GetTable的等价物。 我找到了ObjectContext.CreateQuery方法,但它与DataContext.GetTable不同,因为它需要一个查询字符串才能工作。 有没有办法在不指定查询字符串的情况下使用实体类型为表获取IQueryable对象? *EDIT: Added code snippet* 这是我实现的与linq2sql一起使用的Repository类的片段。 我不能使用ObjectContext.[TableName]因为它不再是通用的。 public class BaseRepository : IDisposable where TClass : class { protected BaseRepository(DataContext database) { _database = database; } … public IQueryable GetAllEntities() { IQueryable entities = _database.GetTable(); return entities; } public IQueryable GetEntities(Expression<Func> condition) { IQueryable table = _database.GetTable(); return table.Where(condition); } *EDIT: Added my […]

WCF – 接收到http:// xxxxx / Service /的HTTP响应时发生错误

在你投票之前,我知道有一些重复的问题,比如这个问题,但是我试过并且没有成功找到它们的解决方案。 可能是我错过了一些东西,但我对WCF还是比较新的,所以有些东西让我头脑发热。 我在我的WCF服务中进行此调用: public User GetStudentRecord(string userName) { try { return new DashboardFacade().GetStudentRecord(userName); } catch (Exception ex) { ServiceFault fault = new ServiceFault(); fault.Operation = “GetStudentRecord”; fault.Reason = “Who knows…”; fault.Message = ex.Message; throw new FaultException(fault, fault.Message, new FaultCode(fault.Reason), fault.Operation); } } DashboardFacade()。GetStudentRecord(..)的定义如下: public User GetStudentRecord(string userName) { User user = ctx.Users.Where(x => x.ADUserName == […]

为什么EF导航属性返回null?

我有两个型号1) public class Indicator { public long ID { get; set; } public string Name { get; set; } public int MaxPoint { get; set; } public string Comment { get; set; } public DateTime DateChanged { get; set; } public DateTime DateCreated { get; set; } public virtual IList CalculationTypes { get; set; } […]

entity framework未加载相关对象

我是Entity Framework的新手,但可能会误解某些内容,或者做错了什么。 我的代码,为我提供一个特定人员的任务列表: public List GetAssignedTasks(int personId) { var items = (from s in _te.tasks where s.person.person_id == personId select s).ToList(); var tasks = new List(); foreach (var t in items) { TaskObject tk = Transformer.UnpackTask(t); tasks.Add(tk); } return tasks; } 我的问题是,它似乎得到了一个记录列表,但没有加载相关的项目。 我的’Transformer.UnpackTask’方法接受我加载的任务实体,然后将其转换为另一个通过业务/服务层上传到UI的对象。 但是一旦我的Unpacker函数尝试引用一个相关对象的项目(例如,一个任务有一个’AssignedPerson’,它有一个带有人员详细信息的Person实体。但是我的实体的AssignedPerson属性是NULL。我想它会加载相关的项目。 我误会了吗?

entity framework6:使用界面作为导航属性可能吗?

有没有办法在EF6中使用接口作为导航属性? 我找到了EF4或更早版本的相关主题,似乎不太可能; 一般来说,从那时起,inheritance似乎已经有了很大的改进,但我还没有找到办法让这个特定问题发挥作用。 例: public interface IPerson { string name { get; set; } } public class Man : IPerson { /* … */ } public class Woman : IPerson { /* … */ } public interface ICar { IPerson driver { get; set; } } public class Car : ICar { public virtual IPerson […]

如何在Dynamic LINQ中使用Contains时动态键入Cast到字符串?

我想使用动态LINQ查询来搜索类中所有属性中的一些文本。 我正在使用以下函数来创建表达式。 我正在将属性名称和搜索文本传递给方法。 在该方法中,如果属性类型是String,那么它工作正常。 如果属性类型是int,DateTime,GUID。 然后它不起作用。 我们知道Contains方法只用于元素数组或字符串。 我认为属性的值应该输入到字符串。 那怎么办呢? 带解释的解决方案是完整的。 我收集了这个代码。 public static Expression<Func> ContainsExp(string propertyName, string contains) { var parameterExp = Expression.Parameter(typeof(T), “type”); var propertyExp = Expression.Property(parameterExp, propertyName); MethodInfo method = typeof(string).GetMethod(“Contains”, new[] { typeof(string) }); var someValue = Expression.Constant(contains, typeof(string)); var containsMethodExp = Expression.Call(propertyExp, method, someValue); return Expression.Lambda<Func>(containsMethodExp, parameterExp); }

ASP.NET MVC搜索页面 – 整数StartsWith On Linq + EF4

因此,在我上一篇文章中,我问如何使用LINQ和EF4构建动态搜索filter( 请参阅此处 ),最后提出了将表达式构建为字符串并使用Dynamic LINQ库将其解析为表达式的解决方案。 我解决了这个问题。 我能够生成一个Expression<Func>并将其传递给DbSet的Where()方法。 我也尝试使用MySql作为EF4背后的数据库。 当我尝试将字符串操作应用于整数时出现问题,例如搜索连续数字以1234开头的数据库记录。 我的初始表达式类似于: record.ConsecutiveNumber.ToString().StartsWith(“1234”) 。 遗憾的是,正如预期的那样,事情并不那么容易,因为EF4无法查询DbSet ,但有exception: “LINQ to Entities无法识别方法’System.String ToString()’方法,并且此方法无法转换为商店表达式。” 经过一些谷歌搜索,我发现这是一个常见的问题。 但是C’MON! 有没有办法执行搜索function,可以搜索具有以“1234”开头的连续数字的记录? 专业人士如何使用EF4实现搜索function? 这是一个属性filter。 如果我想添加多个filter怎么办? 上帝,我的头痛…:/ 谢谢! 编辑: 想法#1:存储过程怎么样? 从Linq调用MySql存储过程怎么样? 我瞄准的方式太高了吗?

LINQ选择动态列和值

由于各种原因,我需要能够允许用户根据他们对列和值的选择从数据库中选择项目。 例如,如果我有一张桌子: Name | Specialty | Rank ——-+—————–+—– John | Basket Weaving | 12 Sally | Basket Weaving | 6 Smith | Fencing | 12 用户可以请求1,2或更多列,并且他们请求的列可以是不同的。 例如,用户可以请求其中Specialty == Basket Weaving和Rank == 12. What I do currently is gather the user’s request and create a list of条目Rank == 12. What I do currently is gather the […]