gpt4 book ai didi

c# - 使用 Microsoft.Practices.EnterpriseLibrary.Data IResultSetMapper

转载 作者:行者123 更新时间:2023-11-30 22:34:56 25 4
gpt4 key购买 nike

我决定试一试 Microsoft.Practices.EnterpriseLibrary,而不是推出我自己的 ADO.Net 帮助程序类。查看文档和示例项目,我真的很喜欢我所看到的。

对于我的项目,我将为我的所有数据访问调用存储过程。特别是,我将严重依赖 ExecuteSprocAccessor 方法。

我的问题涉及使用 IResultSetMapper 接口(interface)。文档说实现此接口(interface)的类必须实现方法 MapSet(reader:IDataReader):IEnumerable 不幸的是,我找不到任何有关如何实现此方法的示例方法。

以下是我假设的正确使用方法:

class MyPOCO : IResultSetMapper<MyPOCO>
{
int ID { get; set; }
string Name { get; set;}

public IEnumerable<MyPOCO> MapSet(IDataReader reader)
{
// HELP ME HERE! PLEASE!
}
}

请告诉我如何填空!如果我正确地解决了这个问题(通过让我的 POCO 实现 IResultSetMapper)或者如果我离题太远了!

谢谢!

最佳答案

你真的需要使用IResultSetMapper<T>吗? ?您的 POCO 是否足够简单,可以使用 IRowMapper<T> 构建? ?如果您只有没有层次结构或嵌套集合等的简单对象,那么 IRowMapper<T>可能已经足够好了。虽然IResultSetMapper<T>确实为您提供了最大的灵 active 。

我不会有 POCO 工具 IResultSetMapper<T> .我会创建一个单独的映射器类。这消除了您的 POCO 类对企业库的依赖。此外,POCO 类现在独立于映射。您可以在不影响 POCO 的情况下更改映射或映射器。

public class MyPocoMapper : IResultSetMapper<MyPoco>
{
public IEnumerable<MyPoco> MapSet ( IDataReader reader )
{
using(reader) // Dispose the reader when we're done
{
while (reader.Read())
{
yield return new MyPoco()
{
MyProperty1 = reader.GetString(
reader.GetOrdinal("MyPropertyX")),
MyProperty2 = reader.GetString(1)
};
}
}
}
}

关于c# - 使用 Microsoft.Practices.EnterpriseLibrary.Data IResultSetMapper<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637348/

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