Tag: poco

为什么EF 4中的Persistence Ignorant POCO需要“Fixup”?

entity framework4备受期待的function之一是能够以持久性无知方式使用POCO(普通旧CLR对象)(即,他们不“知道”它们与entity framework相对于其他机制持久化)。 我试图解决为什么必须执行关联修正并在我的“普通”业务对象中使用FixupCollection。 这个要求似乎意味着业务对象毕竟不能完全忽略持久性机制(事实上,“fixup”这个词听起来像需要修复/改变以适应所选择的持久性机制)。 具体来说,我指的是由ADO.NET POCO实体生成器生成的Association Fixup区域,例如: #region Association Fixup private void FixupImportFile(ImportFile previousValue) { if (previousValue != null && previousValue.Participants.Contains(this)) { previousValue.Participants.Remove(this); } if (ImportFile != null) { if (!ImportFile.Participants.Contains(this)) { ImportFile.Participants.Add(this); } if (ImportFileId != ImportFile.Id) { ImportFileId = ImportFile.Id; } } } #endregion 以及FixupCollection的使用。 其他常见的持久性无知ORM没有类似的限制。 这是由于EF的基本设计决定吗? 即使在EF的后期版本中,是否存在某种程度的非无知? 是否有一种聪明的方法可以隐藏POCO开发人员的持久性依赖性? 这在实践中如何实现,端到端? 例如,我理解最近才为ObservableCollection添加了支持(Silverlight和WPF需要它)。 其他软件层是否存在EF兼容POCO对象的设计要求?

如何修复:关系约束中的从属角色和主要角色中的属性数必须相同?

我正在使用entity framework4.3.1对SQL Server 2012数据库,我正在使用POCO方法。 我收到以下错误,我想知道是否有人可以解释如何解决它: ModelValidationException 在模型生成期间检测到一个或多个validation错误:\ tSystem.Data.Entity.Edm.EdmAssociationConstraint ::关系约束中的从属角色和主要角色中的属性数必须相同。 没有InnerException可用于任何进一步的信息。 我无法更改数据库架构,这有点奇怪,但这里是…… **是主键(注意我有复合主键) (FK)表示外键 以下是表格(如果它有助于我发布SQL以生成它们,但我不认为这些表实际上是问题,因为例外是在模型的validation中): One – **OneId int not null **TwoId int not null (FK) **ThreeId int not null (FK) Name nvarchar(50) not null Two – **TwoId int not null **ThreeId int not null (FK) Name nvarchar(50) not null Three – **ThreeId not null Name […]

Code-First EF4中的多对多关系

您如何在EF4 Code-First CTP3中表示多对多关系? 例如,如果我有以下类: class User { public int Id { get; set; } public string Name { get; set; } public ICollection Profiles { get; set; } } class Profile { public int Id { get; set; } public string Name { get; set; } } 在数据库中有一个UserProfiles表,其中包含FK for User和FK for Profile。 我该如何映射? 编辑:我知道当前如何映射在Profile上有一个ICollection属性,但我真的不希望有一个相反的导航属性应该是“用户有很多配置文件”。

使用POCO和mongodb c#驱动程序时如何管理_id字段

如果我想用POCO读写mongo数据 public class Thingy { public string Foo {get;set;} } … coll.Insert(new Thing(Foo = “hello”)); 当我回读时,我得到一个失败,说_id是一个意外的属性(它是)。 然后我在课堂上添加了一个名为_id的字段。 现在插入不起作用,说_id字段不能为null。 一个尝试过的BsonIgnoreIfNull属性,它没有用。

在某些情况下,OptimisticConcurrencyException在entity framework中不起作用

更新(2010-12-21):根据我一直在做的测试完全重写了这个问题。 此外,这曾经是一个POCO特定的问题,但事实certificate我的问题不一定是POCO特定的。 我正在使用entity framework,我的数据库表中有一个时间戳列,应该用于跟踪乐观并发的更改。 我已将实体设计器中此属性的并发模式设置为“已修复”,并且我得到的结果不一致。 以下是一些简化的场景,它们演示了并发检查在一个场景中工作但在另一个场景中不起作用。 成功抛出OptimisticConcurrencyException: 如果我附加一个断开连接的实体,那么如果存在时间戳冲突,SaveChanges将抛出一个OptimisticConcurrencyException: [HttpPost] public ActionResult Index(Person person) { _context.People.Attach(person); var state = _context.ObjectStateManager.GetObjectStateEntry(person); state.ChangeState(System.Data.EntityState.Modified); _context.SaveChanges(); return RedirectToAction(“Index”); } 不抛出OptimisticConcurrencyException: 另一方面,如果我从数据库中检索我的实体的新副本,并对某些字段进行部分更新,然后调用SaveChanges(),那么即使存在时间戳冲突,我也不会得到OptimisticConcurrencyException : [HttpPost] public ActionResult Index(Person person) { var currentPerson = _context.People.Where(x => x.Id == person.Id).First(); currentPerson.Name = person.Name; // currentPerson.VerColm == [0,0,0,0,0,0,15,167] // person.VerColm == [0,0,0,0,0,0,15,166] currentPerson.VerColm = person.VerColm; […]

数据绑定POCO属性

是否有任何数据绑定框架(BCL或其他)允许在实现INotifyPropertyChanged和INotifyCollectionChanged 任何两个CLR属性之间进行绑定? 似乎应该可以做这样的事情: var binding = new Binding(); binding.Source = someSourceObject; binding.SourcePath = “Customer.Name”; binding.Target = someTargetObject; binding.TargetPath = “Client.Name”; BindingManager.Bind(binding); someSourceObject和someTargetObject只是实现INotifyPropertyChanged POCO。 但是,我不知道BCL对此有任何支持,并且不确定是否存在允许这样做的现有框架。 更新 :鉴于没有现有的库,我已经自己写了自己的库。 它在这里可用。 谢谢

在运行时将属性添加到POCO类

我为我的项目选择了ServiceStack OrmLite ,这是一个纯数据导向的应用程序。 我愿意允许最终用户创建自己的XML格式定义的对象类型,这些格式将用于在运行时使用CodeDOM生成类。 我还将定义应用程序(即User )所需的一些“系统”对象,但我无法预见最终用户将使用的所有属性,因此我正在寻找一种方法来允许扩展我在设计时创建的类。 样品波纹管 public class User { public Guid Uid { get; set; } public String Username { get; set; } public String Password { get; set; } } 最终用户希望拥有Email和Address 。 他应该能够将2个属性添加到上层类,并且整个类将是(OrmLite仍然可以使用它,因为它允许覆盖: public class User { public Guid Uid { get; set; } public String Username { get; set; } public […]

Microsoft.AspNet.Identity.EntityFramework.IdentityUser的外键?

我在VS 2013,刚刚创建了一个MVC应用程序。 我正在创建一个对象,我打算在结果数据库中有一个AspNetUsers表的外键。 该项目确实有一个ApplicationUser(派生自IdentityUser),看起来像是与AspNetUsers表的属性列匹配。 我们如何正确地为此声明外键? public MyObject { public string UserId { get; set; } [ForeignKey(“UserId”)] public ApplicationUser User { get; set;} // other properties } 现在,我修改ApplicationUser以获得MyObjects的集合: public ApplicationUser : IdentityUser { public virtual ICollection MyObjects { get; set; } } 这似乎是如何在EF Code First中进行一对多操作。 但是,当我更新数据库时,我收到的错误表明身份成员(IdentityUserLogin,IdentityUserRole等)没有定义键。 也许那些课程不打算参加EF Code First Migrations? 我可以“到后面”并通过SQL语句添加外键,但如果我想从Code First再次更新,我可能会收到错误(数据库当前不匹配旧的迁移或类似的东西)。 我们如何正确地使用外键参考这些会员表? 我还尝试使用AspNetUsers表的匹配属性创建一个AspNetUser类。 我没有在Client类上使用“public ApplicationUser”,而是声明了“public […]

EF4 Cast DynamicProxies到底层对象

我正在使用带有POCO模板的Entity Framework 4。 我有一个List,其中MyObject是动态代理。 我想使用XmlSerializer序列化此列表,但我不希望它们序列化为DynamicProxies,而是作为底层POCO对象。 我知道ContextOptions.ProxyCreationEnabled,但我不想使用它。 我只是想知道如何将代理对象转换为它的POCO序列化。

什么是格式化我的十进制属性的正确数据注释?

我有一个名为SizeUS的带小数属性的POCO。 我想使用数据注释来格式化视图中的小数显示。 我的SizeUS属性仅在我的视图中显示2个小数位,我希望它显示4个小数位。 完成此任务的正确数据注释是什么? [DisplayFormat( ? )] public decimal SizeUS {get; set;}