簡體   English   中英

嘗試JsonConvert.SerializeObject時從“ ServerVersion”獲取值時出錯

[英]Error getting value from 'ServerVersion' when trying to JsonConvert.SerializeObject

我有一個非常基本的代碼,使用實體框架在MVC C#.NET Controller中獲取模型。

var myModel = myContext.MyData
                .Where(m => m.ID == 1)
                .FirstOrDefault();

string json = Newtonsoft.Json.JsonConvert.SerializeObject(myModel);

當我嘗試運行此代碼時,出現錯誤:

System.Data.SqlClient ServerVersion獲取值時ServerVersion

...如果按Continue ,則視圖顯示:

[InvalidOperationException:無效的操作。 連接已關閉。]

怎么了? SQL與這有什么關系? 如果我在視圖而不是控制器中執行此操作,則會出現相同的錯誤。

編輯:

我的班級(模特)

namespace TrackerEntityFrameworks.Models
{
  public class MyData: DbContext
  {
    [Key]
    public int ID { get; set; }
    [Required]
    public string Name { get; set; }
    [Required]
    public DateTime StartTime { get; set; }
    [Required]
    public DateTime EndTime { get; set; }

    public ICollection<TripRecord> TripRecords { get; set; }
    public ICollection<TollRecord> TollRecords { get; set; }
  }
}

您正在嘗試序列化整個Dbcontext ,請不要這樣做!

DbContext刪除MyData的繼承,您應該會很好。

您的業​​務類必須是“對持久性無知的”,以便可重用,並且實體框架可以通過這種方式完美地工作

將DbContext與您的實體分開,然后執行以下操作:

namespace TrackerEntityFrameworks.Structure
{
  public class MyContext: DbContext
  {
    public DbSet<TripRecord> TripRecords { get; set; }
    public DbSet<TollRecord> TollRecords { get; set; }
    public DbSet<MyData> MyDatas { get; set; }
  }
}

namespace TrackerEntityFrameworks.Models
{
  public class MyData
  {
    [Key]
    public int ID { get; set; }
    [Required]
    public string Name { get; set; }
    [Required]
    public DateTime StartTime { get; set; }
    [Required]
    public DateTime EndTime { get; set; }

    // navigation properties: check how to implement relationships in EF Code First
    public ICollection<TripRecord> TripRecords { get; set; }
    public ICollection<TollRecord> TollRecords { get; set; }
  }
}


using(var myContext = new TrackerEntityFrameworks.Structure.MyContext())
{
  var result = myContext.MyDatas
                  .Where(m => m.ID == 1)
                  .FirstOrDefault();
  string json = Newtonsoft.Json.JsonConvert.SerializeObject(result);
}

實體框架教程: http : //www.entityframeworktutorial.net/code-first/entity-framework-code-first.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM