Tag: entity framework

entity framework错误:无法在表中插入标识列的显式值

我在EF上遇到这个错误。 当IDENTITY_INSERT设置为OFF时,无法在表’GroupMembers_New’中为标识列插入显式值。 Db上的列是标识增量,在EF设计文件中, StoreGeneratedPattern也是identity 。 好像EF每次尝试保存时都试图插入0。 一些建议说ID保留在表上或删除表并重新运行脚本。 有任何想法吗? 这是一些代码: GroupMember groupMember = new GroupMember(); groupMember.GroupId = group.Id; groupMember.UserId = (new UserId(group.Owner)); //groupMember.Id = _groupContext.GroupMembers.Count(); group.GroupMembers.Add(groupMember); _groupContext.SaveChanges();

获取对象内的所有关联/复合对象(以抽象方式)

业务 : 我有一个支付系统,可以通过GiftCoupon,ClubMembershipCard等支付。一个支付本身可以有多个支付组件 分类 : 我有一个付款类。 它有支付组件,如GiftCouponPayment,ClubMembershipCardPayment,CashPayment等。 每种组件类型都满足通用接口IPaymentComponent。 我使用有关现有类型的知识实现了它。 问题 1)如何以抽象的方式实现这个function – 不知道存在哪些类型? 这意味着它需要适用于实现IPaymentComponent接口的所有类型。 2)如果无法在LINQ to SQL中实现它,是否可以在Entity Framework中实现? 3)当LINQ to SQL在Payment对象中生成GiftCouponPayment实体时,它是关联/聚合还是组合? 注意:我使用LINQ to SQL作为ORM。 GiftCouponPayment和Payment是自动生成的类,这些对象由ORM创建。 我通过使用部分类为这些类添加了更多function。 注意:在数据库中,每个PaymentComponent(例如GiftCouponPayment)都有自己的属性(例如CouponValue,CardValue等)。 因此,每层次表不会很好 。 我们需要单独的表格。 那条线路有解决方案吗? 注意:此付款之前,数据库中已存在GiftCouponPayment。 我们需要使用客户提供的GiftCouponPaymentID来识别GiftCouponPayment对象。 我们只需要更新此表中的PaymentID列。 泄漏抽象是指任何已实现的抽象,旨在减少(或隐藏)复杂性,其中底层细节未被完全隐藏 LINQ to SQL Diagram 参考 : entity framework4,inheritancevs扩展? 如何选择inheritance策略http://blogs.msdn.com/b/alexj/archive/2009/04/15/tip-12-choosing-an-inheritance-strategy.aspx 流畅的API示例 – http://blogs.msdn.com/b/adonet/archive/2010/12/14/ef-feature-ctp5-fluent-api-samples.aspx C#代码 public interface IPaymentComponent { int MyID { […]

entity framework订购包括

我想尝试以下类似工作: _dbmsParentSections = FactoryTools.Factory.PdfSections .Include(x => x.Children.OrderBy(y => y.Order).ToList()) .Include(x => x.Hint).Include(x => x.Fields) .Where(x => x.FormId == FormId && x.Parent == null) .OrderBy(o => o.Order) .ToList(); 导致exception的部分是: .Include(x => x.Children.OrderBy(y => y.Order).ToList()) 编辑: 经过进一步观察, _dbmsParentSections.ForEach(x => x.Children = x.Children.OrderBy(y => y.Order).ToList()); 为我完成了这项工作(在最初的Factory调用之后,没有Children.OrderBy )。

SQL注入攻击防范:我从哪里开始

我希望使我的网站安全抵御SQL注入攻击。 有没有人有任何良好的链接,以使网站在ASP.NET站点(c#,Web表单)中抵御这些类型的攻击? 编辑: 我应该指出我正在使用entity framework

没有声明外键的导航属性

我的所有模型都包含至少两个关联。 在ef4中对此进行建模时,我只能通过使用流畅的界面在没有第二个外键属性的情况下执行此操作。 ForeignKey似乎是正确使用的属性,除了它需要一个字符串参数。 所以我的问题是,你能拥有一个导航属性并使用属性声明它吗? public class User : IAuditable { // other code public virtual User Creator { get; set; } public virtual User Modifier { get; set; } }

首先了解entity framework代码中的ForeignKey属性

有关背景信息,请参阅以下post: entity framework一到零或一个没有导航属性的关系 我一直认为ForeignKey用于显示类中哪个属性持有确定导航属性的ForeignKey,例如 public class MemberDataSet { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public int? DeferredDataId { get; set; } [ForeignKey(“DeferredDataId”)] public virtual DeferredData DeferredData { get; set; } } 但是,我在链接的post上发现这是不对的,因为DeferredData的主键被称为Id我实际需要: public class MemberDataSet { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public int? DeferredDataId { get; set; } […]

使用linq-to-entities将字符串转换为datetime的一个大问题

如何使用linq将字符串转换为日期时间到实体…. 我有以下查询,其中visit_date列数据类型是字符串… var memberl = from v in abc.visits join m in abc.members on v.member_Id equals m.member_Id where Convert.ToDateTime(v.visit_Date) >= startdate && Convert.ToDateTime(v.visit_Date) <= enddate group m by new { m.member_Firstname, m.member_Lastname, m.member_Id } into g orderby g.Count() select new { numVisits = g.Count(), firstname = g.Key.member_Firstname, lastname = g.Key.member_Lastname }; 不幸的是我无法改变架构…… 我有错误: linq to […]

entity framework – 存储过程返回值

我试图获取存储过程的返回值。 以下是此类存储过程的示例: select Name, IsEnabled from dbo.something where ID = @ID if @@rowcount = 0 return 1 return 这是一个简单的选择。 如果找到0行,我的结果集将为null,但我仍然会有一个返回值。 这是一个不好的例子,因为这是一个选择,所以我确定我能找到是否返回了0行。 但是,在插入,删除或其他调用中,我们需要此返回值来了解是否存在问题。 我一直无法找到获得此返回值的方法。 我可以得到输出值,我可以得到结果集,但没有返回值。 如果我手动调用SQL,或者即使我使用entity framework运行SqlCommand ,我也可以获得返回值,但这不是我想要做的。 有没有人能够使用Entity Framework从存储过程中获取返回值? 谢谢您的帮助!

LINQ to Entities无法识别方法’Int32 Int32(System.String)’方法,并且此方法无法转换为存储表达式

我正在尝试使用Linq to Entities查询数据库上下文,我收到此错误: INQ to Entities无法识别方法’Int32 Int32(System.String)’方法,并且此方法无法转换为商店表达式。 码: public IEnumerable GetCourseName() { var course = from o in entities.UniversityCourses select new CourseNames { CourseID = Convert.ToInt32(o.CourseID), CourseName = o.CourseName, }; return course.ToList(); } 看到这个之后我就这样试过了 public IEnumerable GetCourseName() { var temp = Convert.ToInt32(o.CourseID); var course = from o in entities.UniversityCourses select new CourseNames { CourseID = […]

entity frameworkfilter“Expression <Func >”

我正在尝试为Entity framework List创建一个filter方法,并更好地理解Expression<Func<… 我有这样的测试function。 public IQueryable Filter(IEnumerable src, Expression<Func> pred) { return src.AsQueryable().Where(pred); } 如果我这样做: context.Table.Filter(e => e.ID < 500); 或这个: context.Table.Filter(e => e.SubTable.Where(et => et.ID 0 && e.ID < 500); 这一切都运作良好。 但如果我这样做: context.Table.Filter(e => e.SubTable.Filter(et => et.ID 0 && e.ID < 500); 或这个: context.Table.Where(e => e.SubTable.Filter(et => et.ID 0 && e.ID < 500); 我收到一个错误。 […]