Tag: orm

具有entity framework6的多对多通用更新方法

我在抽象的DatabaseOperations类中有一个用于Entity Framework的通用Update方法: public virtual void Update(T updatedObject, int key) { if (updatedObject == null) { return; } using (var databaseContext = new U()) { databaseContext.Database.Log = Console.Write; T foundEntity = databaseContext.Set().Find(key); databaseContext.Entry(foundEntity).CurrentValues.SetValues(updatedObject); databaseContext.SaveChanges(); } } 但是,这不能处理多对多关系。 通过覆盖TrussSetDatabaseOperations : DatabaseOperations的Update方法可以克服这种多对多更新问题TrussSetDatabaseOperations : DatabaseOperations ,如下所示: public override void Update(TrussSet updatedTrussSet, int key) { if (updatedTrussSet == null) { […]

何时使用存储过程而不是将任何ORM与编程逻辑一起使用?

大家好我想知道什么时候我更喜欢编写存储过程来编写编程逻辑并使用ORM或其他东西来提取数据。

LINQ to SQL – 1对1关联的问题

在L2S设计器中,我删除了一个表和一个视图。 我尝试在主键上添加2之间的关联。 这应该是一对一的关系,所以我设置了关联的基数属性。 但是,编码时我无法访问子属性。 有什么建议? 编辑 我刚刚在sql server中创建了一个包含我想要的字段的视图,并将其放入L2S中。 更简单。

NHibernate映射:将层次结构保存到单个表而不带鉴别器

我有一个非常可扩展的模块化应用程序。 我想从其他程序集扩展映射的Entites。 但是,我仍然需要对基类进行操作。 例: 程序集A中的父类映射: public class PersonMap : ClassMap { public PersonMap() { Table(“Persons”); Id(x => x.Id).GeneratedBy.Assigned(); } } 程序集B中的子类映射: public class EmployeeMap : SubclassMap { public EmployeeMap() { Table(“Persons”); Extends(typeof(Person)); KeyColumn(“Id”); LazyLoad(); HasMany(x => x.Assignments).KeyColumn(“Id”).Inverse().Cascade.AllDeleteOrphan().LazyLoad().NotFound.Ignore(); } } 现在每当我在Assembly A的某些代码中创建Person时,它就会被NHibernate保存为Employee。 每当我保存一个Person并尝试在Assembly A中刷新它时,由于代理会导致类转换exception。程序集A必须不依赖于程序集B. 我需要在程序集A的所有方法中对父类进行操作。子类仅用于其他程序集。 我该如何映射这样的东西? 我如何告诉NHibernate将它保存为父类? 我使用SaveOrUpdate来保存实体; 如何正确扩展实体,然后将它们保存到没有鉴别器的同一个表中? NHibernate不能按对象类型区分吗? 有解决方法吗? 我不想指定手动代理,因为我必须为每个实体创建代理! 由于依赖性问题,我无法使用访问者模式。 我需要一种方法来扩展不同程序集中的映射实体,而不会出现这样的问题! 数据库是遗留的,我无法改变它。 你会如何解决这个问题?

NHibernate – 无法执行查询 – 输入字符串的格式不正确

我一直在用这个问题摸不着头脑,我对于什么是错的一无所知。 概述:我在MySQL数据库中有两个表。 两者都正确映射到数据库(我可以加载数据),我可以查询到一个表,但不能查询另一个表。 我已经研究过的解决方案:在表和C#代码之间键入转换问题,映射问题,SQL格式问题。 失败的代码如下: Configuration config = new Configuration(); config.Configure(); ISessionFactory sessionFactory = config.BuildSessionFactory(); var schema = new SchemaUpdate(config); schema.Execute(true, true); results = session.CreateSQLQuery(“SELECT * FROM Stats_Table”) // Exception thrown here .AddEntity(typeof(TestStats)) .List(); class级: public class Stats { public virtual Guid Id { get; set; } public virtual Guid TestId { get; set; } […]

流畅的NHibernate集合表每子类

我在Fluent NHibernate中遇到inheritance问题。 我之前设法让Table-Per-Subclass工作,但我无法获得基类的集合。 它正在寻找我没有的基类表。 这是我的架构: User(Id, Name, Email) User_Account_Password(Id, UserId, PasswordHash, Salt) User_Account_Facebook(Id, UserId, FacebookId) 这是我的对象模型: public class User { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual string Email { get; set; } public virtual IList Accounts { get; set; } } public abstract […]

如何设计工作单元以支持批量操作并提供更高的性能?

我有两个不同的工作单元:一个基于ADO.NET ,主要调用存储过程( uowADO ),另一个使用Entity Framework 6 ( uowEF ),最近为了支持Oracle数据库而添加,因此我没有必要重写所有SP(我的知识在那里有限)。 因此,在对数据库执行操作时,业务层只加载其中一个(基于配置)(但我不能并行使用它们,因为uowADO不支持Oracle) 添加新的uowEF我注意到了大的性能问题,当然主要是批量操作。 基本上我现在只有当前IUnitOfWork上的Commit和Rollback方法……非常接近本文的建议。 所以,我正在考虑重做这个工作单元。 例如,我读到有时在涉及批量操作时禁用dbContext.Configuration.AutoDetectChangesEnabled ,以及其他有关EF的优化提示可能有所帮助。 不幸的是,我不确定如何设计这样的工作单元以使其通用,以便我可以在BL和数据访问层的所有情况下使用它: ADO.NET和EF 。 有什么想法,建议和良好的链接吗?

EF7(Core)中同一个表的多个关系

我有这样的模特 public class Question { public string Id { get; set; } = Guid.NewGuid().ToString(); public Answer Answer { get; set; } public List Variants { get; set; } public string CorrectVariantId { get; set; } public Variant CorrectVariant { get; set; } } public class Variant { public string Id { get; set; } = […]

entity framework:将varchar映射到DateTime属性

entity framework4。 MySQL的 我正在尝试将varchar列映射到类的DateTime属性 我的课: [Table(“webnews_in”)] public class WEBNews_in : AbsNews { private DateTime _inDateTimeAdded = DateTime.MinValue; public DateTime InDateTimeAdded { get { return _inDateTimeAdded; } set { _inDateTimeAdded = value; } } private DateTime _inDateTimeUpdated = DateTime.MinValue; public DateTime InDateTimeUpdated { get { return _inDateTimeUpdated; } set { _inDateTimeUpdated = value; } } } […]

为什么linq-2-sql会创建额外的不必要对象?

我在数据库中有一个简单的Parent Child表 CREATE TABLE [Parent]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](256) NOT NULL) ALTER TABLE [Parent] ADD CONSTRAINT [PK_Parent_Id] PRIMARY KEY ([Id]) CREATE TABLE [Child]( [Id] [int] IDENTITY(1,1) NOT NULL, [ParentId] [int] NOT NULL, [Name] [nvarchar](256) NOT NULL) ALTER TABLE [Child] ADD CONSTRAINT [PK_Child_Id] PRIMARY KEY ([Id]) ALTER TABLE [Child] ADD CONSTRAINT [FK_Child_Parent_ID] FOREIGN […]