我正在嘗試遵循以下教程:ASP.NET Web窗體Web窗體和Visual Studio入門(URL :http://www.asp.net/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/introduction-and-overview)。錯誤:無法將類型'System.Data.Entity.DbSet'隱式轉換爲'System.Linq.IQueryable'
我在我的項目中有其他名字,但想法是一樣的。我正嘗試爲假日公園的客戶創建一個預訂系統。 我所做的一切都與本教程相同,但在出現錯誤時我不知道解決方案。在教程中,我在步驟5.
我得到的錯誤是:不能隱式轉換類型'System.Data.Entity.DbSet(PortOfTroyCustomers.Models.Accommodation)'到'System.Linq.IQueryable(PortOfTroyCustomers.Accommodation )」。一個顯式轉換存在(是否缺少強制轉換?)
這是Accommodation.aspx.cs的代碼(在教程:ProductList.aspx.cs)這是錯誤occurted:
public partial class Accommodation : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public IQueryable<Accommodation> GetAccommodations([QueryString("id")] int? sortId)
{
var _db = new PortOfTroyCustomers.Models.PortOfTroyContext();
IQueryable<Accommodation> query = _db.Accommodations; // This is the spot!
if (sortId.HasValue && sortId > 0)
{
query = query.Where(a => a.SortID == sortId); // and this!
}
return query;
}
}
其他代碼:
類住宿代碼(在教程幾乎相同Product.cs):
public class Accommodation
{
[ScaffoldColumn(false)]
public int AccommodationID { get; set; }
public short NumberOfGuest { get; set; }
public string ImagePath { get; set; }
[Display(Name = "Richtprijs per week")]
[DataType(DataType.Currency)] // data type op geld zetten voor de double
public double? PricePerWeek { get; set; }
// foreign key
public int? SortID { get; set; }
public int? ResortID { get; set; }
// relaties leggen
public virtual Sort Sort { get; set; }
public virtual Resort Resort { get; set; }
}
類分類代碼(在教程幾乎相同Category.cs):
public class Sort
{
[ScaffoldColumn(false)]
[Display(Name = "Type")]
public int SortID { get; set; }
[Required, StringLength(100), Display(Name = "Name")]
public string Title { get; set; }
[Required, StringLength(10000), DataType(DataType.MultilineText)]
public string Description { get; set; }
public virtual ICollection<Accommodation> Accommodations { get; set; }
}
上下文代碼:
public class PortOfTroyContext : DbContext
{
public PortOfTroyContext() : base("PortOfTroyCustomers")
{
}
public DbSet<Sort> Sorts { get; set; }
public DbSet<Accommodation> Accommodations { get; set; }
public DbSet<Resort> Resorts { get; set; }
public DbSet<Facility> Facilities { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// nieuwe koppeltabel tussen Ficilities en Resorts (is namelijk een TNMT relatie)
modelBuilder.Entity<Facility>()
.HasMany(r => r.Resorts).WithMany(i => i.Facilities)
.Map(t => t.MapLeftKey("FicilityID")
.MapRightKey("ResortID")
.ToTable("FicilityResort"));
}
}
能否請你幫我這個錯誤?
謝謝!!這工作! :D和toppic:我現在有錯誤:'PortOfTroyCustomers.Accommodation'沒有包含'SortID'的定義,也沒有找到接受'PortOfTroyCustomers.Accommodation'類型的第一個參數的擴展方法'SortID'缺少使用指令或程序集引用?)。這個錯誤由SortID查詢= query.Where(a => a.SortID == sortId);'。你知道我該如何解決這個錯誤嗎?我也不知道如何解決這個錯誤。 – Marjolein 2015-03-19 14:00:51
@Mjarolein - 我不知道你爲什麼要將它轉換爲'IQuerable',而不是試試這個:''List query = _db.Accommodations.ToList();'它應該解決你的問題。 –
2015-03-19 14:13:07
如果我這樣做,我會得到和以前一樣的錯誤。但現在通過** _ db.Accommodations.ToList()**/** SortID **/return ** query ** – Marjolein 2015-03-19 14:31:58