C# Sqlite net从同一个类创建两个表

C# Sqlite net从同一个类创建两个表,c#,sqlite,sqlite-net,C#,Sqlite,Sqlite Net,Sqlite net的文档说明,您可以使用库中可用的ORM创建一个表,方法是使用以下泛型: await connection.creatTableAsync<myClass>(); 等待连接。createTableAsync(); 这将在数据库中生成一个名为myClass 现在假设我需要另一个表来存储相同的类型(myClass),但在不同名称的不同表中(例如,myOtherClassTable) 如何使用Sqlite网络库实现这一点 现在假设我需要另一个表来存储相同的类型 (my

Sqlite net的文档说明,您可以使用库中可用的ORM创建一个表,方法是使用以下泛型:

await connection.creatTableAsync<myClass>();
等待连接。createTableAsync();
这将在数据库中生成一个名为
myClass

现在假设我需要另一个表来存储相同的类型(myClass),但在不同名称的不同表中(例如,
myOtherClassTable

如何使用Sqlite网络库实现这一点

现在假设我需要另一个表来存储相同的类型 (myClass)但位于具有不同名称的不同表中

你不能这样做

Table方法要求存在与相同名称的表 正在返回的类型

这是一个简单的ORM,它的设计目的不是为了关心您对它施加的任何人为限制。它根据类型名称跟踪使用的表,因此在处理查找表之前需要另一层间接寻址,以查看某个类型映射到多个表

如果我想为myClass对象检索数据库中的所有行,它应该同时返回myClass表和MyTherClassTable中的行吗?你需要开始编写更多的ORM功能来提供选项,并弄清楚这正是让你进入ORM领域的东西

根据所有属性的可见性,您可以创建一个子类类型,该子类类型实际上没有实现任何新功能,只是具有不同的类名,或者使用一个公共IMyClass接口,并且实际上有两个不同的类使用不同的名称实现接口,但实现方式相同


这些OO解决方案中没有一个是理想的,如果可能的话,你应该考虑将另一个属性添加到你要筛选的类对象中,以确定你将哪些项目放到2个单独的表中。

< P> API只给了你2个选项:<代码> int CreateTable(CeaTeFlkCealFlask= CurdieFlask.NoW.)和
int CreateTable(Type ty,CreateFlags CreateFlags=CreateFlags.None)
都将创建一个以类型名称命名的表,该名称不是您想要的名称

您可以自己创建表:

connection.Execute("CREATE TABLE [myOtherTable] (Column1 int, Column2 ...");

但是,正如@nvuono已经说过的,这可能会给您带来其他一些麻烦;)

有两个文件(Sqlite.cs和SqliteAsync.cs)谢谢@stackunderflow,我会把tomatos从我的眼睛里拿开:)如果我想使用sql语言语法,那么我会选择Sqlite PCL,无论如何谢谢:)我喜欢OOP方法和ORM(我非常喜欢EF和linq)我也喜欢micro-ORM。你可以再看一眼。你给了我一个有趣的技巧!。我创建了另一个类,它是
myClass
的副本,并将其命名为
myOtherClass
,然后创建该表。但我需要在VS测试项目上测试它,看看我是否可以读取“列表”上的两个表。。测试失败后我将进行更新:(bec您无法设置'List theList=List()`