Tag: orm

NHibernate多对多关系问题:可以选择,无法更新

每个用户都有一个角色列表: 我正在跟踪SQL服务器的所有查询。 当我选择用户时,我也看到了SQL SELECT语句(这是好的)。 问题是当我尝试更新现有用户(具有角色)时:我只看到User表的更新,但没有User_Role (这是坏的)。 澄清一下:我不希望在Role表中插入/更新(但在User_Role ,因为角色是“永久的”并且可以自由地附加和分离。 为什么选择正常,但不更新 。 请? 如果需要更多信息 – 请问 – 我会尝试回答所有次要问题。 更新: Role映射: 更新N2:这是表的定义方式: Role表: CREATE TABLE [Roles] ( [Id] INTEGER NOT NULL PRIMARY KEY, [Name] text NOT NULL, [LastChanged] INT NOT NULL DEFAULT(0) ); CREATE UNIQUE INDEX uidxUserName ON Roles (Name COLLATE NOCASE); User表: CREATE TABLE [Users] ( [Id] […]

entity framework6 – 基类的inheritance和导航属性

我的导航属性和inheritance有问题。 这是我的问题:我有一个基类Person类和inheritance自Person User和Worker类。 在数据库级别,我使用单表inheritance或每层次表(TPH)inheritance。 所以有一个带有鉴别器列的表。 User和Worker需要有Company关系,所以我想在Person类上定义它。 我这样定义我的模型: [Table(“mydb.person”)] public abstract partial class Person { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long ID { get; set; } public long? CompanyID { get; set; } [ForeignKey(“CompanyID”)] public virtual Company Company { get; set; } … } public partial class User : Person { … } public partial class Worker : […]

映射到枚举列表?

我需要使用NHibernate将具有Enums列表的类映射到db表 这是对象 public class Driver : IIdentity { private IList licences; /// /// The drivers licences /// public virtual IList Licences { get { return this.licences; } set { this.licences = value; } } ….. rest of the class …. } //the enum public enum Licence { FivePersonCar = 5, SixPersonCar = 6 } —————-这里是DB表 […]

来自SQL数据库表的C#类

碰到了这个: http://www.eggheadcafe.com/articles/adonet_source_code_generator.asp 并且想知道这是否是正确的解决方案,因为我不是为每个存储过程创建类的粉丝,或者我使用Enterprise Library for ASP.net 2.0项目。

SQL 2008 – INFORMATION_SCHEMA视图中的外键约束

我正在编写ac#unit test,它针对目标数据库validationORM类的字符串属性,始终是SQL 2008,以及数据映射到的类。 检查指定的外键在DB中是否有效很容易: static private bool ConstraintExsits(string table, string column, ConstraintType constraintType) { string constraintTypeWhereClause; switch (constraintType) { case ConstraintType.PrimaryKey: constraintTypeWhereClause = “PRIMARY KEY”; break; case ConstraintType.ForeignKey: constraintTypeWhereClause = “FOREIGN KEY”; break; default: throw new ArgumentOutOfRangeException(“constraintType”); } var cmd = new SqlCommand( @”SELECT a.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS a JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE b on a.CONSTRAINT_NAME = b.CONSTRAINT_NAME […]

动态的dapper中的where子句

是否可以使用精致的添加和删除标准? 我需要这个来实现用户驱动的过滤。 由于组合太多,对每个filter进行查询是不可行的。

请推荐用于N层开发的.NET ORM

我需要仔细选择.NET ORM用于N层应用程序。 这意味着,我将拥有公开数据的服务器(WCF服务)和显示它的客户端。 ORM应该平滑地支持所有相关的序列化问题 – 对象或对象集合,或者必须跨越进程边界的任何事物。 理想情况下,多进程环境中的用法应与单个进程中的用法相同。 标准是: db模式映射到对象的灵活性(首选) 便于使用 免费,开源(首选) 必须适合N层(多进程多域应用程序) 性能 与Visual Studio集成的工具(首选) 可测性 采用,文件的可用性 支持广泛的RDBMS(首选;我们使用MSSQL,但我不想与它绑在一起) DB不可知 – 不同的DB,相同的API

使用entity framework向模型添加方法

使用entity framework,是否可以向对象类添加方法? 例如,我有一个CLIENT映射,我想创建一个“getAgeFromBirhDate”方法。

当两个类具有相同名称但名称空间不同时,NHibernate DuplicateMappingException

我的域模型root中有一个类,如下所示: namespace Domain { public class Foo { … } } 我还在另一个名称空间中有另一个具有相同名称的类: namespace Domain.SubDomain { public class Foo { … } } 对于我的映射,我有一个Mapping目录,其子目录名为SubDomain ,其中包含Domain.SubDomain命名空间中找到的域类的映射。 他们都在同一个集会中。 但是,当我尝试使用NHibernate加载它们时,我不断收到DuplicateMappingException …即使两个Foos都有不同的命名空间。 我用来加载我的NHibernate配置的代码是这样的: var cfg = new Configuration() .Configure() .AddAssembly(“Domain”); 我如何告诉NHibernate让我使用两个具有相同名称(但名称不同的名称空间)的实体?

ORM和图层

对不起,这一点到处都是……但是我觉得自己像是一条追逐我的尾巴的狗,我现在都很困惑。 我正在尝试看到开发3层解决方案(IL,BL,DL)的最简洁方法,其中DL使用ORM来抽象对数据库的访问。 在我看过的每个地方,人们使用LinqToSQL或LLBLGen Pro来生成代表DB Tables的对象,并在所有3个层中引用这些类。 似乎已经忽略了40年的编码模式 – 或者发生了范式转换,我错过了解释部分,为什么它完全可以这样做。 然而,似乎还有一些基础可以让数据存储机制不可知 – 看看LinqToSQL刚刚发生了什么:很多代码都是针对它编写的 – 只有MS才能放弃它…所以我想我尽可能地隔离ORM部分,只是不知道如何。 所以,回到绝对基础,这里是我希望以非常干净的方式组装的基本部分: 我正在开始的程序集:UL.dll BL.dll DL.dll 主要课程: 一个Message类,它具有一个公开MessageAddress对象的集合(称为MessageAddresses)的属性: class Message { public MessageAddress From {get;} public MessageAddresses To {get;} } 每层function: BL向UI公开一个名为GetMessage(Guid id)的UI,它返回一个Message实例。 BL依次包裹DL。 DL有一个ProviderFactory,它包装一个Provider实例。 DL.ProviderFactory公开(可能是我的一部分问题)两个名为GetMessage(Guid id)的静态方法,以及SaveMessage(消息消息)最终目标是能够换出为Linq2SQL编写的提供程序一个用于LLBLGen Pro,或另一个不用于ORM的提供商(例如VistaDB)。 设计目标:我想要分层。 我希望每个图层只依赖于它下面的图层,而不是它上面的图层。 我希望ORM生成的类只在DL层中。 我希望UL与BL共享Message类。 因此,这是否意味着: a)消息在BL中定义b)DB表中的Db / Orm / Manual表示(’DbMessageRecord’,或’MessageEntity’,或其他任何ORM调用它)在DL中定义。 c)BL依赖于DL d)在调用DL方法之前,没有ref或知道BL,BL必须将它们转换为BL实体(例如:DbMessageRecord)? UL: Main() { id […]