LunchPail 2.1.1
dotnet add package LunchPail --version 2.1.1
NuGet\Install-Package LunchPail -Version 2.1.1
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="LunchPail" Version="2.1.1" />
对于支持 PackageReference 的项目,请将此 XML 节点复制到项目文件中,以便引用该包。
paket add LunchPail --version 2.1.1
NuGet 团队不提供对此客户端的支持。请联系其 维护者 以获取支持。
#r "nuget: LunchPail, 2.1.1"
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将此内容复制到交互式工具或脚本源代码中,以引用该包。
// Install LunchPail as a Cake Addin #addin nuget:?package=LunchPail&version=2.1.1 // Install LunchPail as a Cake Tool #tool nuget:?package=LunchPail&version=2.1.1
NuGet 团队不提供对此客户端的支持。请联系其 维护者 以获取支持。
LunchPail
LunchPail 是针对 ADO.NET 的 .NET Standard 兼容 Unit of Work 实现。UoW 是数据上下文的工作马,因此该项目被称为“午餐盒”,以参考蓝领运动员。
入门
- 在您的 IoC 容器中注册上下文(以下以 .NET Core 和 SQL Server 为例)
//startup.cs
public void ConfigureServices(IServiceCollection services)
{
//rest of code...
//context
services.AddTransient<IDbConnectionFactory>(options =>
{
var builder = new SqlConnectionStringBuilder(Configuration.GetConnectionString("DefaultConnection"));
return new DbConnectionFactory(() =>
{
var conn = new SqlConnection(builder.ConnectionString);
conn.Open();
return conn;
});
});
services.AddScoped<IDbContext, DbContext>();
//repositories (we'll add this later)
}
- 创建一个表示您的数据库对象的域类。
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
- 创建一个依赖
IDbContext
的仓储
public interface IProductRepository
{
Task<Product> Read (int id);
}
public class ProductRepository : DbRepository
{
public ProductRepository(IDbContext dbContext) : base(dbContext) { }
public Product Read(int id)
{
return Connection.QuerySingleOrDefault<Product>("select * from dbo.Product where Id = @id", new { id }, transaction: Transaction);
}
}
- 将仓储注册到您的 IoC 容器中(以下以 .NET Core 为例)
//startup.cs
public void ConfigureServices(IServiceCollection services)
{
//repositories
services.AddScoped<IProductRepository, ProductRepository>();
}
- 注册上下文和仓储后,您可以将其注入到控制器或服务层。
请注意,调用
dbContext.Commit()
必须在每次交互完成后发生,以确保正确释放连接。无论是读取还是写入,都适用此规定。
public class ProductService
{
private readonly IDbContext dbContext;
private readonly IProductRepository productRepository;
public ProductService (
IDbContext dbContext,
IProductRepository productRepository)
{
this.dbContext = dbContext;
this.productRepository = productRepository;
}
public Product Read(int id)
{
var product = productRepository.Read(id);
dbContext.Commit(); // You MUST call commit after all interactions
return product;
}
}
由 Pim Brouwers 在多伦多,安大略省,倾心打造。
产品 | 版本 兼容和额外的目标框架版本 |
---|---|
.NET | net5.0已计算。 net5.0-windows已计算。 net6.0已计算。 net6.0-android已计算。 net6.0-ios已计算。 net6.0-maccatalyst已计算。 net6.0-macos已计算。 net6.0-tvos已计算。 net6.0-windows已计算。 net7.0已计算。 net7.0-android已计算。 net7.0-ios已计算。 net7.0-maccatalyst已计算。 net7.0-macos已计算。 net7.0-tvos已计算。 net7.0-windows已计算。 net8.0已计算。 net8.0-android已计算。 net8.0-browser已计算。 net8.0-ios已计算。 net8.0-maccatalyst已计算。 net8.0-macos已计算。 net8.0-tvos已计算。 net8.0-windows已计算。 |
.NET Core | netcoreapp2.0已计算。 netcoreapp2.1已计算。 netcoreapp2.2已计算。 netcoreapp3.0已计算。 netcoreapp3.1已计算。 |
.NET Standard | netstandard2.0兼容。 netstandard2.1已计算。 |
.NET Framework | net461已计算。 net462已计算。 net463已计算。 net47已计算。 net471已计算。 net472已计算。 net48已计算。 net481已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETStandard 2.0
- 无依赖项。
NuGet 包包 (1)
显示依赖于 LunchPail 的前 1 个 NuGet 包
包 | 下载 |
---|---|
LunchPail.Repository
用于 LunchPail 的 .NET Standard 兼容抽象仓库。 |
GitHub 仓库
此包不被任何流行的 GitHub 仓库使用。