chr*_*ark 1 .net-core asp.net-core
我有一个针对.net核心的WebApplication。我还创建了一个针对.net核心的类库。
我正在按照此Dapper教程在此处创建用户存储库
能够提供在WebApplication启动时注入到将成为数据访问层的项目中的选项将是很好的。
这是一个单独项目中用户存储库的代码。
class UsersRepository
{
private readonly MyOptions _options;
private string connectionString;
public UsersRepository(IOptions iopt/// insert Option here )
{
_options = iopt.Value;
connectionString = _options.connString;
}
public IDbConnection Connection
{
get
{
return new SqlConnection(connectionString);
}
}
Run Code Online (Sandbox Code Playgroud)
WebApplication项目启动看起来如下。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<MyOptions>(Configuration);
services.AddMvc();
}
Run Code Online (Sandbox Code Playgroud)
当然MyOptions是Web应用程序中的一个类,只有一个属性connString
一种可能的设计是在类库中为存储库配置创建一个新接口,并让MyOptions类型实现该接口。
例如,在您的类库中,您可以执行以下操作:
public interface IRepositoryConfig
{
string ConnectionString { get; }
}
public class UserRepository
{
public UserRepository(IRepositoryConfig config)
{
// setup
}
}
Run Code Online (Sandbox Code Playgroud)
在您的WebAPI Startup类中,可以按以下步骤进行连接:
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<MyOptions>(Configuration);
services.AddMvc();
services.AddScoped<IRepositoryConfig>(s =>
s.GetService<IOptions<MyOptions>>().Value
);
services.AddScoped<UserRepository>();
}
Run Code Online (Sandbox Code Playgroud)
这样做将允许您使用Asp.Net Core配置/选项框架,而不必直接引用类库中的任何Asp.Net DLL。
| 归档时间: |
|
| 查看次数: |
863 次 |
| 最近记录: |