我正在创建一个能够定位多个设备的Xamarin.Forms
应用程序。为了存储数据/偏好/等,我必须使用SQLite.Net
。根据文档以及遇到此问题的其他用户,您无法使用complex types
,如下所示。
public class UserPreferences
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; } /// great
[MaxLength(50)]
public string email { get; set; } /// strings are okay
public byte[] byteArray {get; set;} ///storing blobs is fine
///... not okay below, because SQLite can't store complex types. I'm
///pretty sure even a List<string> isn't possible
public List<Orders> favorites {get; set;}
}
这个应用程序也需要与服务器通信。我了解客户端的限制,这意味着我将Serialization/Deserialization
和blob
存储与SQLite
一起使用。
但是,我必须考虑不同的选项,要么继续使用SQLite.net
,要么在服务器端使用实体。关于Entity如何处理复杂类型,我无法找到任何背景信息,这是我能找到的关于如何使用它们的全部信息。 https://msdn.microsoft.com/en-us/data/jj680147.aspx
如果我已经拥有客户端byte[]
序列化的逻辑,那么这将使我的工作更轻松。
基本上,我要问的是,实体如何处理存储/访问Complex Types
?如果我想要我的应用程序(每秒需要数千笔交易)来使用sqlite.net
或使用Entity
答案 0 :(得分:1)
你是对的,SQLite不会在实体上存储复杂类型,但EF也不存在。它是两个独立的实体。所以,只需创建另一个实体Orders
。 SQLite也不处理关系或导航属性。如果您确实希望自动处理外键关系,请查看you could use a tool that understood XML。只要正确配置关系,它就能很好地工作。