System.NotSupportedException Xamarin

时间:2017-06-19 14:20:31

标签: c# exception xamarin exception-handling icollection

我的应用程序有3步注册过程,

  1. 姓名,电子邮件,密码(在signup_vm内);
  2. 用户详细信息(在User_ProfileINC_vm中);
  3. 药物摄入量(在UserMedicineINC_vm内)。
  4. 我能够通过1)和2),一旦我导航到3) - 我看到页面的UI但突然出现“未处理的异常”弹出框。

    我在调试输出中得到的错误:

    col2

    我认为这是因为我在Medicine类中有这行代码(在models文件夹中):

    System.NotSupportedException: Don't know about System.Collections.Generic.ICollection`1[LoginSystem.Models.Medicine]
    

    而这个Medicine_Incident就是另一个继承医学的课程:

    public virtual ICollection<Medicine_Incident> Medicine_Incident { get; set; }  
    

    * Medicine and Medicine_Incident定义了一些字段,如:

    public class Medicine_Incident : Medicine
    

    Xamarin是否禁止使用Icollections?

    如果你知道发生了什么,请告诉我。 谢谢!

    * App输出:

    public string Medicine_Name { get; set; }
    public string Medicine_Desc { get; set; }
    

1 个答案:

答案 0 :(得分:1)

我建议在您的Medicine_Incident类声明中添加一个ForeignKey,该声明引用与之关联的Medicine。

public class Medicine_Incident : Medicine
{
    // Whatever properties you have already defined

    ...

    // This is your link to your medicine PrimaryKey
    public int MedicineId { get; set; }
}

如果您想将ICollection留在您的Medicine类声明中以方便使用,请在其上抛出一个IgnoreAttribute:

public class Medicine 
{
    // Whatever other stuff you have declared

    ...

    [Ignore]
    public virtual ICollection<Medicine_Incident> Medicine_Incident { get; set; }
}

这可确保SQLite不会尝试为ICollection类型创建列,因为它不知道如何。