我有一个使用 Sqlite 进行 CRUD 操作的数据层,所以在我的 Sqlite 类中,我必须传递一个数据库的路径,为此我IConnectionProvider在数据层中有如下接口:
public interface IConnectionProvider
{
string DbPath { get; }
}
数据库文件
public class SQLiteDb : DbContext, IDbContext
{
internal const string DefaultDatabaseName = "My.db";
private string connectionString = null;
public SQLiteDb(IConnectionProvider connectionProvider)
{
this.connectionString = connectionProvider.DbPath;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite(connectionString);
}
}
我的项目架构如下:
Data Layer -> View Model -> Presentation Layer
我想避免将数据层直接用于表示层,但要传递 DBPath,我必须添加对它的引用。
下面是IConnectionProvider在我的表示层中的实现:
public class SqlConnectionProvider : IConnectionProvider
{
public string dbPath = string.Empty;
public string DbPath
{
get
{
if (string.IsNullOrEmpty(dbPath))
{
dbPath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "MyDb.sqlite");
}
return dbPath;
}
}
}
有什么办法可以避免将 DataLayer 直接用于表示层?我想在 VM 中创建包装器,但我认为这不是一个好主意,因为会创建更多的依赖项。
12345678_0001
相关分类