Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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表中插入复杂模型?_C#_Wpf_Sqlite_Windows Store Apps - Fatal编程技术网

C# 如何在sqlite表中插入复杂模型?

C# 如何在sqlite表中插入复杂模型?,c#,wpf,sqlite,windows-store-apps,C#,Wpf,Sqlite,Windows Store Apps,首先,如果这个问题看起来不专业,我应该道歉,但是我不知道如何处理它 实际上,我有一个Person类,其中有另一个类,即Address,Address类本身有属性,其类型是另一个类,即省和市 public class Province { public string Name { get; set; } } public class City { public string Name { get; set; } } public class Address { publ

首先,如果这个问题看起来不专业,我应该道歉,但是我不知道如何处理它

实际上,我有一个Person类,其中有另一个类,即Address,Address类本身有属性,其类型是另一个类,即省和市

public class Province
{
    public string Name { get; set; }
}

public class City
{
    public string Name { get; set; }
}

public class Address
{
    public Province Province { get; set; }
    public City City { get; set; }
    public string Street { get; set; }
    public string PostalCode { get; set; }
}

public class Person
{
    public long Id { get; set; }
    public string Name { get; set; }
    public string Phone { get; set; }
    public Address { get; set; }

}
我应该说,我曾经与Mongodb合作过,你们中的许多人都知道,使用Mongodb,可以插入、更新和删除文档本身。但是现在我工作的公司正在转向windows应用商店,它似乎不适用于Mongodb,所以我决定使用Sqlite,但是,正如我前面所说的,我真的不知道如何设计表,以便我可以读写我的person对象


所以我非常需要你的帮助。请让我走正确的路。感谢您的帮助。提前感谢。

SQLLite与普通SQL数据库非常相似,但在复杂功能上有所减少,您可以创建一个包含所有字段(即类属性)的persons表,并将其插入表中,并在必要时相应地选择数据

这不是一个可以学习如何使用数据库的网站,因为它的范围太广,任何人都无法涵盖。但简言之,您基本上需要按照与设计类相同的方式设置数据库表

唯一的例外是
Person
表没有
Address
对象,而是有一个
AddressId
列,该列与需要添加到
Address
表中的
Id
列相关。同样地,与其说
地址
表有
城市
对象,不如说它有一个
城市Id
列,该列与需要添加到
城市
表的
Id
列相关


因此,每个表都应该有自己唯一可识别的
Id
列,
Id
值在其他表中用作外键,如上所述。只有在代码中,我们才能将这个平面模型构建成层次模型。现在我真的应该投票结束这个问题,因为我离题了。。。请不要问我大量的后续问题,让我后悔这个决定。我无法回答您所有的数据库查询。

对不起,我想我误解了您的意思。你的意思是我可以在SQlite字段中存储地址对象吗?不,基本上你需要为每个属性创建字段,例如,在person表中,你需要添加诸如Id(int)、Name(Varchar)、Phone(Varchar)、Province{Varchar)、City(Varchar)、Street(Varchar)、PostalCode(Varchar)等字段因此,要检索人员详细信息,您需要执行select语句,并将结果分配给对象的相应属性,然后返回objectok。如果我想要两个或更多地址,例如HomeAddress和WorkAddress,该怎么办?在这种情况下,您可以创建一个单独的地址表,并引用人员id(我假设它是person表中的主键)并将其用作address表中的外键