我的Xamarin.Forms PCL项目中的SQLite数据库存在问题。 我从Microsoft Docs跟踪了这个例子:
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/databases
我一直在使用自己的类型来存储数据,并且它对简单的自定义类型有效,但我最近已将List<int>
和出勤类型添加到自定义对象(信息)。
现在,当我尝试创建对象时,我收到以下错误:
不了解System.Collections.Generic.List`1 [System.Int32] 不了解MyApp.Attendance
这是初始代码:
readonly SQLiteAsyncConnection database;
database = new SQLiteAsyncConnection(dbPath);
database.CreateTableAsync<UserPrefrences>().Wait();
database.CreateTableAsync<Attendance>().Wait();
database.CreateTableAsync<Info>().Wait();
我在Xamarin.iOS中使用Xamarin.Forms。
答案 0 :(得分:2)
默认情况下,您无法存储它们。但是,您可以使用sqlite-net-extensions来实现此目的。您可以查看 sqlite-net-extensions here。
使用此扩展程序,您可以使用TextBlob
属性执行此操作,如下所示:
public class Address
{
public string StreetName { get; set; }
public string Number { get; set; }
public string PostalCode { get; set; }
public string Country { get; set; }
}
public class Person
{
public string Name { get; set; }
[TextBlob("PhonesBlobbed")]
public List<string> PhoneNumbers { get; set; }
[TextBlob("AddressesBlobbed")]
public List<Address> Addresses { get; set; }
public string PhonesBlobbed { get; set; } // serialized phone numbers
public string AddressesBlobbed { get; set; } // serialized addresses
}
有关url的TextBlob的更多说明。
文本blobbed属性文本blobbed属性在加载时被序列化为文本属性,并在加载时反序列化。这允许 将简单对象存储在同一个表中的单个列中。
文本blobbed属性的序列化和开销很小 反序列化对象和一些限制,但是最好的方法 存储简单对象,如基本类型的列表或字典或 简单的关系。
text-blobbed属性需要声明的字符串属性 存储序列化对象。
我刚刚看到StackOverflow上有关于这个主题的类似/相同的问题,所以你也可以看看它们。