gpt4 book ai didi

foreign-keys - dapper 在 classmapper 中一对一映射

转载 作者:行者123 更新时间:2023-12-04 10:39:34 25 4
gpt4 key购买 nike

我有 2 个简单的表。

create table Owner
(
Id int primary key,
Name nvarchar(100),
);

create table Status
(
Id int primary key,
BrandName nvarchar(50)
OwnerId int foreign key references Owner(Id),
);

在应用程序中,我将这些表映射到模型类:
public class Owner
{
public int Id {get;set;}
public string Name{get;set;}
public Status Status {get;set;}
}


public class Status
{
public int Id {get;set;}
public string Brand {get;set;}
public int OwnerId {get;set;}
}

我使用 dapper 和 dapper 扩展。

我想在 classmapper 中的 dapper 中一对一地映射关系。这是可能的?

我的目标是当我添加所有者对象时,该对象还通过存储库将属性状态设置为 db
它还插入记录做状态表。

实现这种行为的最佳方法是什么?
public class OwnerMapper : ClassMapper<Owner>
{
public OwnerMapper()
{
Table("Owner");
Map(p=>p.Id).Column("Id").Key(KeyType.Assigned);
Map(p=>p.Name).Column("Name");
//how map property status

}
}


public class StatusMapper : ClassMapper<Status>
{
public StatusMapper()
{
Table("Status");
Map(p=>p.Id).Column("Id").Key(KeyType.Identity);
Map(p=>p.Brand).Column("BrandName");
Map(p=>OwnerId).Column("OwnerId");

}
}

最佳答案

你可以试试Dapper的multi-mapping特征:

[Test]
public void MyTest()
{
var connection = new SqlConnection("conn string here");
connection.Open();

const string sql =
"select Id = 1, Name ='Bill Gates', Id = 1, Brand = 'Apple', OwnerId = 1";
var result = connection.Query<Owner, Status, Owner>(sql,
(owner, status) =>
{
owner.Status = status;
return owner;
},
commandType: CommandType.Text
).FirstOrDefault();
Assert.That(result, Is.Not.Null);
Assert.That(result.Status, Is.Not.Null);
Assert.That(result.Status.Brand, Is.EqualTo("Apple"));
connection.Close();
}

关于foreign-keys - dapper 在 classmapper 中一对一映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18361893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com