Orm既然是关系映射模型,那学Orm的时侯先学的就是关系映射。所有Orm关系无非就是:一对一,多对一(一对多),多对多。那我们就来对比一下Nh和EF是如何处理数据关系的。
一、 一对一关系映射
一对一的关系映射最好的例子就是一个人都有一个×××.下面我们就用这个例子。
EF实体:
UserInfo.cs
public class UserInfo
{
public int userid
{
get;
set;
}
public string username
{
get;
set;
}
public int Carid
{
get;
set;
}
public virtual CardInfo CardInfo
{
get;
set;
}
}
CardInfo.cs
public class CardInfo
{
public int Carid
{
get;
set;
}
public string CardName
{
get;
set;
}
}
NH实体:
UserInfo.cs
public class UserInfo
{
Public virtual int userid
{
get;
set;
}
Public virtual string username
{
get;
set;
}
public virtual CardInfo CardInfo
{
get;
set;
}
}
CardInfo.cs
public class CardInfo
{
Public virtual int Carid
{
get;
set;
}
Public virtual string CardName
{
get;
set;
}
}
猛的一看这样的模型没错,不知道EF为什么不像NH一样不能自动创建外键(Carid)这样看起来不怎么符合领域模型。就因为这个让我习惯了好一会儿!比较之我更习惯NH映射的模型.这样子一看就知道一个人手里拿了一个×××.
关系映射:
EF UserInfo映射类:
public class UserInfoConfig : EntityTypeConfiguration<UserInfo>
{
public UserInfoConfig()
{
this.HasKey(p => p.userid);//定义主键
this.Property(p => p.username).HasMaxLength(255);//普通属性映射
this.HasRequired(p => p.CardInfo).WithMany().HasForeignKey(p => p.Carid);//一对一的映射
this.ToTable("T_UserInfo");//生成表
}
}
EF CardInfo映射类:
public class CardInfoConfig : EntityTypeConfiguration<CardInfo>
{
public CardInfoConfig()
{
this.HasKey(p => p.Carid);
this.Property(p => p.CardName).HasMaxLength(255);
this.ToTable("T_CardInfo");
}
}
这样的映射是不是感觉很爽?我也是这么认为,可我还是不大习惯。可能是Nh 用XML映射用多了吧!让我们看下Nh One to One的映射.
<class name="UserInfo" table="N_UerInfo">
<id name="userid" column="[userid]">
<generator class="native"/>
</id>
<property name="username" type="string" column="[username]" length="255"/>
<one-to-one name="CardInfo" constrained="true"/>
</class>
<class name="CardInfo" table="N_CardInfo">
<id name="Carid" column="[Carid]">
<generator class="native"/>
</id>
<property name="CardName" column="[CardName]" type="string" length="255"/>
</class>
EF和NH关系对比
精选 翻译
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
OSPF的邻居关系和邻接关系
ospf邻居与邻接
OSPF 多址 邻接关系 -
EF Core关系配置
EF Core关系配置一对多、一对多关系数据的获取、获取指定字段、只获取外键id、导航属性、引用的组织结构树、一对一、多对多
windows c# .net SQL Core -
数据库关系与EF实体关系
数据库中的三种关系,在EF中对应着有三种关系,但不是整齐对应的。
职场 休闲 EntityFramework 数据库关系 EF实体关系