2

汎用リポジトリを使用してデータベースからオブジェクトを取得しようとしています。コードを実行すると、次のエラー メッセージが表示されます。

   String was not recognized as a valid Boolean. 

以前に Single() 関数でリポジトリを使用したことがありますが、これによりエラーは発生しません。

作業クエリの例

User usr = Adapter.UserRepository.Single(u => u.userEmail.Equals("thomas.vanlauwe@gmail.com"));

失敗したクエリ

public ActionResult Display()
        {
            Project project = new Project();
            int id = 2;
            project = Adapter.ProjectRepository.Single(p => p.ProjectID.Equals(id));
            return View();
        }

リポジトリ

public T Single(Expression<Func<T, bool>> where)
{
        try
        {
            IQueryable<T> query = IDbSet;
            //query = PerformInclusions(includeProperties, query);
            return query.Single(where);
        }
        catch (InvalidOperationException ex)
        {
            Console.WriteLine(ex);
            return null;
        }
    }

次の行にエラーが表示されます。 return query.Single(where);

プロジェクトクラス

public class Project
{
    public Project() {
        Categories = new List<Category>();
    }
    public int ProjectID { get; set; }
    [Display(Name = "Titel")]
    public string ProjectTitle { get; set; }
    [Display(Name = "Beschrijving")]
    public string ProjectDescription { get; set; }
    [Display(Name = "Deadline")]
    public Nullable<DateTime> ProjectDeadlineDate { get; set; }
    [Display(Name = "End register")]
    public Nullable<DateTime> ProjectEndRegisterDate { get; set; }
    [Display(Name = "Budget")]
    public double ProjectBudget { get; set; }
    public Boolean ProjectIsFixedPrice { get; set; } //Fixed price or budget / hour
    public int ProjectUrgent { get; set; }
    public Int16 ProjectDifficulty { get; set; }
    public Nullable<DateTime> ProjectCreatedDate { get; set; }
    public Boolean ProjectFinished { get; set; }
    public Int16 ProjectRating { get; set; }
    public string ProjectComment { get; set; }
    public int CompanyID { get; set; }

    public virtual ICollection<Category> Categories { get; set; }
}

私のデータベースの ID は 2 なので、クエリは間違いなくプロジェクト オブジェクトを返すはずです。十分な情報があることを願っています。必要に応じてコードを更新します。

前もって感謝します

編集

このエラーの理由がわかりません。そのため、このコードを追加します。マッピングと関係がある可能性があります。

マッピング

        /*************ProjectS**************/
        modelBuilder.Entity<Project>().HasKey(t => t.ProjectID);
        modelBuilder.Entity<Project>().HasMany(p => p.Categories)
            .WithMany(cat => cat.Projects)
            .Map(pc =>
                {
                    pc.ToTable("category_has_project");
                    pc.MapLeftKey("project_id");
                    pc.MapRightKey("category_id");
                }
        );

クラスカテゴリ

public class Category
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }

    public virtual ICollection<Project> Projects { get; set; }
}
4

1 に答える 1

0

タイプの不一致は、実際にはデータベース内の他のフィールド (つまり、ProjectID 以外) と Project クラスの間で発生している可能性があります。Project クラスのすべてのプロパティとデータ型が、Project データベース テーブルのフィールドと正しく一致していることを確認してください。

偶発的な不一致が発生する可能性があります。たとえば、Project クラスのブール フィールドがデータベースで varchar フィールドとしてマークされている場合や、その逆の場合があります。

于 2013-06-07T00:33:47.407 に答える