Tag: poco

从数据库加载没有代理类?

在entity framework4中是否可以选择在没有使用代理类的情况下将某些查询加载到POCO中? (出于缓存该对象的目的,以备将来只读使用)。 我正在使用存储库 – 服务模式。 我的意思是: var order = _orderService.GetById(1); // after order is loaded then we can see in the debugger that: // order.Customer is of type System.Data.Entity.DynamicProxy.Customer_17631AJG_etc 我想要的是order.Customer实际使用POCO类型MyApp.Models.Entities.Customer而不是该类型的代理。 编辑:根据Ladislav建议在存储库中添加“GetUnproxied”方法,我做了这个改动: // this is the current method that must return a DynamicProxy public IQueryable GetQuery() { return ObjectSet.AsQueryable(); } // this is the new […]

从xml文件生成POCO对象

我有一个XML文件,大致描述了我inheritance的数据库模式 我想为这个文件生成POCO对象,让我在C#应用程序中使用业务对象。 这可能吗?怎么样?

使用动态发射的POCO进行快速序列化和反序列化

我目前正在将SQL表行序列化为二进制格式以实现高效存储。 我将二进制数据序列化/反序列化为每行List 。 我正在尝试将其升级为使用POCO,这将通过每列一个字段动态生成(发出)。 我已经在网上搜索了几个小时,偶然发现了像EF,T4,ExpandoObject这样的ORM /框架,但所有这些都使用动态对象(可以动态添加/删除属性)或者在编译之前简单地生成POCO。 我不能使用模板,因为表的模式在编译时是未知的,并且使用动态对象会过度(和慢),因为我知道确切的属性集及其类型。 我需要为每个表生成一个POCO,其中Fields对应于列,并且相应地设置数据类型(INT – > int,TEXT – > string)。 在生成POCO之后,我将继续使用发出的CIL来获取/设置属性,就像PetaPoco对静态编译的POCO所做的那样 。 我希望这一切都比使用无类型列表更快,并给我高保真POCO,这些POCO是强类型的并且可以由CLR加速。 我认为这是正确的吗? 你可以在运行时创建POCO吗? 与使用List相比,使用POCO会更快或更节省内存吗? 基本上,值得麻烦吗? 我已经知道如何使用发出的CIL加速获取/设置字段。

EF Code-First中查找表的最佳实践

我正在用EF做我的第一个项目,我打算去代码优先模型。 我试图找到一些关于处理一个相当经典的“查找表”场景的指导。 我正在处理一个非常规范的情况,我会坚持地址数据。 所以,我有一个简单的地址DTO …… public class Address { public int Id { get; set; } public virtual string StreetAddress1 { get; set; } public virtual string StreetAddress2 { get; set; } public virtual string City { get; set; } public virtual string State { get; set; } public virtual string ZipCode { get; set; […]

entity framework4.1代码第一外键ID

我有两个实体引用了一对多。 当entity framework创建表时,它创建两个外键,一个用于我用Fluent接口指定的键,另一个用于ICollection。 如何摆脱重复的外键? public class Person { public long RecordId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Email { get; set; } public string Username { get; set; } public long DepartmentId { get; set; } public virtual Department Department { […]

ORM /持久层建议

我正在开始一个新项目,我正在寻找一个非常好的ORM或非基于SQL的持久层。 对于这个项目,我真的不关心数据是如何持久化的,只要它可以以合理的速度查询和存储,最重要的是简单的查询。 应该无缝地处理并发(前端将在另一层上,并且将有几个同时用户,但不一定处理相同的数据)并且我必须更少关注数据层(简单查询,自动懒惰)加载等)更好。 我还想不惜一切代价避免使用基于字符串的查询,因此支持LINQ或其他直观且可能强类型查询的工具会获得很大的好处。 最后使用POCO对象是我真正想做的另一件事 这是我评估的产品列表以及它们不适合的原因,只是为了让我看不到任何关于使用它们的建议: NHibernate:疯狂的xml,太多的设置,高维护复杂性和模型更改的成本,会话工厂很乱,不符合我的需求 Castle ActiveRecord:基于NHibernate,少量文档以及与NHibernate相关的一些问题仍然适用。 此外,为了获得合适的模型,它需要很多属性,以便最好手动创建模式,并且处理关系的方式是一种耻辱。 Linq To SQL:缺少POCO对象,根据MS,它不会提高太多加class时间(EF是他们所承诺的) 实体Framweork:虽然在第4版中POCO对象是可能的,但它们仍然非常hacky并迫使你做太多的手工工作来设置。 此外,v4只是一个测试版 LLBLGen Pro:很好,尤其是SelfServicing适配器,但不是POCO。 此外,LINQ提供商还不是完美的。 最后,删除一组对象是不可能通过LINQ导致混合API(其中一个远非直观)和我不喜欢。 XPO:除了直观,非常缓慢的并发问题,而不是POCO SubSonic SimpleRepository:几分钟我以为我在做梦。 当我弄清楚事情是如何处理关系时,deam结束了 我也查看了MongoDB和CouchDB,但在这些情况下,相关对象的捕获看起来像是在做正确的事情之前需要进行太多测试。 此外,它们都没有提供强类型查询。 提前感谢您的建议!

Entity Framework 5.0复合外键到非主键 – 是否可能?

我在.net 4.5控制台应用程序中使用Entity Framework 5.0.0.0,我必须访问一个包含两个表的数据库,它们之间有外键关系,如下所示: 奇怪的是,外键在B(Almost1, Almost2)和A(Almost1, Almost2)而不是从B(AId)到A(AId) 。 SQL服务器允许这样做,因为Almost1和Almost2组合是唯一的,并且都不可为空(至少在表A上 – 在B它们是可选关系,但是由by表示)。 这是创建这种情况的一些SQL: CREATE TABLE [dbo].[A]( [AId] [int] IDENTITY(1,1) NOT NULL, [Almost1] [int] NOT NULL, [Almost2] [int] NOT NULL, CONSTRAINT [PK_A] PRIMARY KEY CLUSTERED ( [AId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT […]

EF 4.1:从集合中删除子对象不会删除它 – 为什么?

我有一些错误: EF 4:从集合中删除子对象不会删除它 – 为什么? 当我从父母中删除孩子时,当我调用SaveChanges()时删除了孩子,它会给出以下错误消息: 操作失败:无法更改关系,因为一个或多个外键属性不可为空。 当对关系进行更改时,相关的外键属性将设置为空值。 如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。 但是使用DbContext和EF 4.1,“context.DeleteObject(recipe)”不存在。 有什么建议吗? [编辑] public void UpdateWithAttributes(Model model, IEnumerable entities) { var modelOriginal = this.unitOfWork.Model.GetById(model.IModel); this.unitOfWork.Context.Entry(modelOriginal).CurrentValues.SetValues(model); UpdateEntityAttributeAssociations(modelOriginal, entities); this.unitOfWork.Commit(); } public void UpdateEntityAttributeAssociations(Model model, IEnumerable current) { unitOfWork.Context.Entry(model).Collection(m => m.Entities).Load(); ICollection original = model.Entities; // perhaps .ToList() necessary // delete if (original != null) { List […]

如何解决“内部.NET Framework数据提供程序错误1025”。

我首先使用Entity Framework 4.3,POCO,数据库,我收到以下错误: 内部.NET Framework数据提供程序错误1025。 问题: 我认为我的查询表达了我的意图,但我似乎遇到了这个错误,所以我想知道是否有人知道如何以不同的方式构建我的查询来解决这个错误? 这是场景…… 我有一个SQL Server 2008数据库,有2个表–A和B: 一个 AId(int – not null – identity – primary key) AName(nvarchar(10) – not null) 乙 BId(int – not null – identity – primary key) SomeName(nvarchar(10) – not null) AId(int – not null – 连接到表A中的AId的外键) 然后我像这样定义上下文: public class DatabaseContext : DbContext { public DatabaseContext(string name) […]

EF与POCO + WCF + WPF。 在客户端重用POCO课程还是使用DTO?

我们正在开发一个带有WPF客户端的3层应用程序,它通过WCF与BLL进行通信。 我们使用EF访问我们的数据库。 我们一直在使用EF的默认EntityObject代码生成器,但是当通过线路发送这些对象时,以及在BLL中处理和重新附加它们时会遇到很多问题和序列化问题。 我们即将切换到POCO模板,并重写数据访问和我们应用程序的通信部分(我们希望有一个更清洁的架构,而不是那种“魔术代码”。 我的问题是在客户端重用POCO类是否是个好主意? 或者我们应该创建单独的DTO类? 即使它们与POCO实体类相同? 这两种方法的优点/缺点是什么?