实体框架如何处理复杂类型?

时间:2016-06-20 01:23:52

标签: c# entity-framework sqlite xamarin

我正在创建一个能够定位多个设备的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/Deserializationblob存储与SQLite一起使用。

但是,我必须考虑不同的选项,要么继续使用SQLite.net,要么在服务器端使用实体。关于Entity如何处理复杂类型,我无法找到任何背景信息,这是我能找到的关于如何使用它们的全部信息。 https://msdn.microsoft.com/en-us/data/jj680147.aspx

如果我已经拥有客户端byte[]序列化的逻辑,那么这将使我的工作更轻松。

基本上,我要问的是,实体如何处理存储/访问Complex Types?如果我想要我的应用程序(每秒需要数千笔交易)来使用sqlite.net或使用Entity

,我将使用此答案来推断

1 个答案:

答案 0 :(得分:1)

你是对的,SQLite不会在实体上存储复杂类型,但EF也不存在。它是两个独立的实体。所以,只需创建另一个实体Orders。 SQLite也不处理关系或导航属性。如果您确实希望自动处理外键关系,请查看you could use a tool that understood XML。只要正确配置关系,它就能很好地工作。