Tag: orm

如何使用PetaPoco库从数据库自动创建模型?

我在我的数据库中有一个表,我想用getter和setter创建一个模型类。 对于我项目中的大多数任务,我使用的是PetaPoco。 我手动创建了模型,但很少有表有很多列。 有没有办法使用PetaPoco从数据库创建模型?

object引用未保存的瞬态实例在刷新之前保存瞬态实例

我有一个自我加入员工实体类,其id,name和ref列与self相关。 我想创建它的新实例并将其持久化到db。 起初我创建了一个Employee类的实例并将其命名为manager。 然后我从Employee表中获取了这些值的记录:Id = 1,Name =“A”,RefId = null并将这些值设置为manager对象。 之后我再次创建了Employee类的实例 并设置它的属性值如下:emp.Name =“B”,emp.Ref = manager。 最后我通过使用base.Add(resource)方法来坚持它。 那时Nhibernate引发了以下错误:“对象引用未保存的瞬态实例,在刷新之前保存瞬态实例”。 这是映射文件内容: class> 请帮我解决这个错误。 谢谢

Fluent NHibernate使用FluentMappings忽略ClassMap中的属性

我在我的项目中使用NHibernate 3.1和Fluent NHibernate作为ORM。 我需要Fluent NHibernate忽略POCO的属性。 起初,我的post看起来可能与此问题完全相同,但事实并非如此。 我的并发症首先来自POCO定义在不同于映射的assembly中,并且我正在使用流畅的映射来进行POCO。 我还有其他要求,即不在会话工厂配置发生的情况下编写ingore-property代码(这发生在模块外部的集中位置),而是作为定义映射的模块的一部分。 理想情况下,我认为正确的位置将是具体的ClassMap实现,因为它确切地知道如何向ORM描述POCO。 但是,我坚持这个主要是因为这是我对NHibernate及其流畅API的第一次影响。 到目前为止,我对其function和可扩展性有非常好的印象,我希望有一种方法可以通过将映射相关代码封装在相应模块中的方式来实现我的需求。 这是我的配置,从一个集中的地方: List assemblies = GetModules().Select(x => x.GetType().Assembly).ToList(); ISessionFactory nhibernateSessionFactory = Fluently .Configure() .Mappings(m => assemblies.ForEach(asm => m.FluentMappings.AddFromAssembly(asm))) .Database( MsSqlConfiguration.MsSql2005 .ShowSql() .ConnectionString(DatabaseConfig.Instance.ConnectionString)) .ExposeConfiguration(c => new SchemaUpdate(c).Execute(true, true)) .BuildSessionFactory(); 我使用从ClassMapinheritance的标准类映射: public class User { public virtual int ID { get; set; } public virtual String Username […]

对象关系映射

我需要将复杂数据类型的实例存储到关系数据库中。 有没有办法在没有首先修改数据库结构的情况下执行此操作,就像在ado.net中完成一样? 应该从类结构创建数据库(或表)结构。 该类有一些属性,如整数,字符串或bool,但也可能有更复杂的属性。 我很感激每一个帮助建议…… 我想在c#中这样做… 更新: 谢谢你的回复。 我尝试了EF 4的“代码优先”(非常感谢Ramesh)并将我的对象放入数据库。 但是现在我遇到了将数据从数据库中取回到对象实例的问题。 我的课程看起来像这样: class Foo { public int id { get; set; } public string Woot { get; set; } } class Bar { public int id { get; set; } public string name { get; set; } public ICollection FooList { get; set; } } […]

在.NET上建议一个简单的ORM – 用于维护遗留应用程序的设计

我被指派维护一堆遗留应用程序,这些应用程序在05年没有ORM之前构建了大量的存储过程。 与我合作的开发人员不了解entity framework,也不了解LINQ,也不急于学习。 .NET上是否有ORM为现有数据库表和存储过程提供简单的对象接口? 我很高兴它能让我编写几行代码来获取每个表的类,并且它具有与每列中的数据相对应的属性以及解决外键关系/多对多关系的一些方法或属性 – 转发并反转。 例如,保存一个员工和部门记录 Employee e = new Employee(“John”, null); Department d = new Department(“QA”); d.save(); e.department = d; e.save(); 无需编写INSERT SQL语句。 编辑:我正在使用MS SQL Server 2008

是否可以在MS Entity Framework中查询新添加的对象

有没有办法在Entity Framework中查询或只访问新添加的对象(使用ObjectContext.AddObject方法)? 我的意思是当它尚未使用SaveChanges保存到数据存储时 我知道查询被转换为底层SQL并针对数据存储执行,并且它还没有这个新对象。 但无论如何,我很好奇 – 如果它没有得到支持,也许它在理论上是可能的。 如果不是,开发商如何处理它? 手动跟踪新对象并使用Linq查询对象? 同样的问题也适用于LinqToSql。

entity framework以一对多替换集合的正确方法

假设客户有许多电话号码,而电话号码只有一个客户。 public class PhoneNumber : IValueObject { public string Number {get; set;} public string Type {get; set;} } public class Customer : IEntity { public ICollection phones {get; private set;} //ew at no encapsulated collection support public void SetPhones(params PhoneNumber[] phones) { this.phones.Clear(); this.phones.AddRange(phones); } } 如果我像这样进行EF映射并运行它,每次我设置电话号码时,它将创建新的PhoneNumbers但不删除旧的。 没有其他实体引用电话号码,我甚至没有在我的dbcontext上公开它,有没有办法告诉EF Customer完全拥有PhoneNumbers ,因此如果从集合中删除了电话号码,他们应该被删除? 我意识到有十几种方法来解决这个问题,但这不是一个奇怪的边缘情况,处理这个问题的“正确”方法是什么。

为什么通用存储库被视为反模式?

在我看来,许多专业的存储库类共享相似的特性,让这些类实现一个概述这些特性的接口是有意义的,创建一个通用的存储库 说明我的观点,说我们有这个代码 public class IEntity { public int Id; } public interface IRepository where T: IEntity { IEnumerable List { get; } void Add(T entity); void Delete(T entity); void Update(T entity); T FindById(int Id); } [Table(“Author”)] public partial class Author : IEntity { public int Id { get; set; } [Required] public string authorname { […]

什么是一些好的entity framework替代品

我现在正在使用Entity Framework并且不断编写内联sql,因为Entity框架不支持全文搜索和其他function。 是否有ORM有许多支持高级查询的function? 我觉得如果我有时会写内联sql我也可以在内联sql中完成所有这些操作。 这里有任何帮助

将entity framework中的字符串列映射到枚举

有没有办法将字符串列映射到实体模型中的枚举? 我在Hibernate中做过这个,但是无法在EMF中弄明白。