Я пытаюсь отобразить класс из SQL в коллекцию linq, но мне не удается ..
У меня есть этот класс:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Linq;
using System.Data.Linq.Mapping;
namespace SportsStore.Entities
{
[Table(Name = "Products")]
public class Product
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
public int ProductID { get; set; }
[Column]public string Name { get; set; }
[Column]public string Description { get; set; }
[Column]public `int` Price { get; set; }
[Column]public string Category { get; set; }
}
}
Я вызываю этот класс из другого класса:
using SportsStore.Abstract;
using SportsStore.Entities;
using System.Data.Linq;
using System.Linq;
namespace SportsStore.Concrete
{
public class SqlProductsRepository : IProductRepository
{
private Table<Product> productsTable;
public SqlProductsRepository(string connnectionString)
{
productsTable = (new DataContext(connnectionString)).GetTable<Product>();
}
public IQueryable<Product> Products
{
get { return productsTable; }
}
}
}
По сути, я получаю это:
base {System.SystemException} = {"Указанное приведение недействительно."}
Это означает, что приведение неверно
обновление Моя база данных выглядит так:
>
**ProductID int (primary key) Name
nvarchar(100) Description
nvarchar(500) Category
nvarchar(50) Price int**
StackTrace:
[InvalidCastException: указанное приведение недопустимо.]
System.Data.SqlClient.SqlBuffer.get_Decimal () + 274
System.Data.SqlClient.SqlDataReader.GetDecimal (Int32 i) + 44
Read_Product (ObjectMaterializer 1 ) +1088<br>
System.Data.Linq.SqlClient.ObjectReader
2.MoveNext () + 32
System.Collections.Generic.List 1..ctor(IEnumerable
1 коллекция) +406 System.Linq.Enumerable.ToList (IEnumerable 1 source) +58<br>
SportsStore.Controllers.ProductController.List() in
D:\Call.of.Duty.Modern.Warfare.3-RELOADED\SportsStore\SportsStore\SportsStore\Controllers\ProductController.cs:28
lambda_method(Closure , ControllerBase , Object[] ) +96<br>
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase
controller, Object[] parameters) +51<br>
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext
controllerContext, IDictionary
2 параметра) + 409
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2
parameters) +52<br>
System.Web.Mvc.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a()
+127 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter
filter, ActionExecutingContext preContext, Func
1 продолжениеon) + 436
System.Web.Mvc. <> c_ DisplayClassf.b _c () +61 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters (ControllerContext controllerContext, параметры IList 1 filters, ActionDescriptor actionDescriptor,
IDictionary
2))+ 305
System.Web.Mvc.ControllerActionInvoker.InvokeAction (ControllerContext controllerContext, String actionName) + 830
System.Web.Mvc.Controller.ExecuteCore () + 136
System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) +111 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) + 39
System.Web.Mvc. <> C_ DisplayClass8.b _4 () + 65
System.Web.Mvc.Async. <> C_ DisplayClass1.b _0 () + 44
System.Web.Mvc.Async. <> C__DisplayClass8 1.<BeginSynchronous>b__7(IAsyncResult
_) +42 System.Web.Mvc.Async.WrappedAsyncResult
1.End () +141 System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult asyncResult, тег объекта) + 54
System.Web.Mvc.Async.AsyncResultWrapper.End (тег IAsyncResult asyncResult, объект)40
System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +52 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (результат IAsyncResult) + 38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionSte.HttpApplication.ExecuteStep (шаг IExecutionStep, логическое и завершено синхронно) + 184