【问题标题】:Matisses Linq IConvertible Exception Matisse C#Matisses Linq IConvertible 异常 Matisse C#
【发布时间】:2012-01-30 00:47:42
【问题描述】:

嘿,伙计们,从 matisse 对象数据库中检索记录时遇到问题,现在它让我...当它应该工作时出错,基本上我试图编辑现有记录,但是它告诉我它需要是 IConvertible 但是这在使用 SQL 时会起作用,它也适用于使用 Matisse 的其他人。

db.Open();

        Zoo.Data.Zoo editanimals = new Zoo.Data.Zoo(db);

        var animalidvar = animalid.Text;
        {
          Reptiles_Amphibians f = (from  Reptiles_Amphibians a in editanimals.Reptiles_Amphibianss where a.Animal_ID == animalidvar select a).FirstOrDefault<Reptiles_Amphibians>();


            f.Animal_ID = animalid.Text;
            f.Species = species.Text;
            f.Classification = classif.Text;
            f.Given_Name = givenname.Text;
            f.Photograph = photograph.Text;
            f.Date_Of_Birth = Convert.ToDateTime(dob.Text);
            f.Age = Convert.ToInt32(age.Text);
            f.Location_Code = location.Text;
            f.Born_Captivity_Wild = borncw.Text;
            f.Special_Notes = specnote.Text;
            f.Date_Joined = Convert.ToDateTime(datejoined.Text);
            f.Animal_Dimensions_Upon_Join = duj.Text;
            f.Average_Animal_Dimension = ad.Text;
            f.Average_Life_Span = averagelife.Text;
            f.Dietary_Requirements = diet.Text;
            f.Natural_Habitat_Description = nathab.Text;
            f.Average_Number_Of_Offspring = Convert.ToInt32(averageOffspringTxt.Text);
            f.Reproduction_Type = reproductionTxt.Text;
            f.Average_Clutch_Size = clutchSizeTxt.Text;
            f.Status = statusCombo.Text;
            db.Commit();

        }
        db.Close();
    }

【问题讨论】:

  • 您是否尝试过通过调试器运行它以确定异常发生在哪一行?
  • 它发生在 LINQ 查询上:/ 我尝试了所有方法……有点疯狂啊哈
  • 只用.FirstOrDefault() 替换.FirstOrDefault&lt;Reptiles_Amphibians&gt;() 会发生什么?另外,{} 的意义何在?他们将子范围 f,但这真的有必要吗?
  • 遇到与 .FirstOrDefault() 相同的问题,{} 根本不需要,LINQ 查询返回一个值,因为它的计数为 1
  • 现在我很困惑...我以为你说异常发生在 LINQ 查询中?

标签: c# linq matisse iconvertible


【解决方案1】:

持久化类(如 Reptiles_Amphibians)必须包含在程序集中。

MtDatabase _db = new MtDatabase("localhost", "AnimalDB", new MtPackageObjectFactory("AssemblyName.AnimalsNamespace,AssemblyName", "DataBaseNamespace"));

在 linq 查询之前

_db.SqlCurrentNamespace = "DataBaseNamespace";s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    相关资源
    最近更新 更多