Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用SQLite在DAL和BLL之间共享类?_C#_Sqlite_Windows Runtime - Fatal编程技术网

C# 如何使用SQLite在DAL和BLL之间共享类?

C# 如何使用SQLite在DAL和BLL之间共享类?,c#,sqlite,windows-runtime,C#,Sqlite,Windows Runtime,例如,数据访问层定义: public class Customer { [PrimaryKey, AutoIncrement] public int Id { get; set; } [MaxLength(30)] public string Name { get; set; } } SQLite使用这些属性映射表。问题是我需要在BLL和表示层中使用Customer类。我想隔离DAL实现,以避免向上层添加对SQLite的引用。 显然,如果我尝试在没有SQLi

例如,数据访问层定义:

public class Customer
{

    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    [MaxLength(30)]
    public string Name { get; set; }
}
SQLite使用这些属性映射表。问题是我需要在BLL和表示层中使用
Customer
类。我想隔离DAL实现,以避免向上层添加对SQLite的引用。 显然,如果我尝试在没有
SQLite
引用的
Common.dll
程序集中添加
Customer
类,问题在于
SQLite
属性

我可以创建另一个
Customer
类,例如
CustomerBase
,并将值从
Customer
映射到
CustomerBase
。这对我来说似乎太单调了,特别是因为我管理许多数据类


对于这种情况,建议采用哪种方法?

我认为数据访问层应该与业务层DTO分离。因此,只需将您的sqllite实体放在数据访问层,然后将另一个dto(数据传输对象)放在BLL中,然后使用两个对象之间的映射即可

是的,这是我在问题的最后一部分中解释的。我同意,DTO由DAL和BLL共享,但我觉得大多数DTO与sqlite实体相同。我管理了100多个DTO,这意味着至少还有100个sqlite实体,代码映射每对对象,通常属性为1=1。这对我来说太乏味了。在以前使用其他平台的项目中,我可以“重用”DAL中的dto,以创建派生dto类的新sql实体。现在,因为我需要使用这些属性,所以不能重用它们。