Dmi*_*iyd 4 sql linq asp.net-mvc-2
我试图将一个类从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; }
}
}
Run Code Online (Sandbox Code Playgroud)
我从另一个班级打电话给那个班级:
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; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,我得到这个:
base {System.SystemException} = {"指定的演员表无效."}
这意味着演员表无效
更新 我的数据库看起来像这样:
>
**ProductID int (primary key) Name
nvarchar(100) Description
nvarchar(500) Category
nvarchar(50) Price int**
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
[InvalidCastException的:指定的转换无效.]
System.Data.SqlClient.SqlBuffer.get_Decimal()274
System.Data.SqlClient.SqlDataReader.GetDecimal(的Int32ⅰ)44
Read_Product(ObjectMaterializer 2.MoveNext()32 系统. Collections.Generic.List 1集合)406 System.Linq.Enumerable.ToList(IEnumerable的2个参数)409 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary的1续)436 的System.Web. MVC.<> C_ DisplayClassf.b _c()61个System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext,IList的2个参数)305 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,字符串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 Syst em.Web.Mvc.<> c_ DisplayClass8.b _4()+65 System.Web.Mvc.Async.<> c_ DisplayClass1.b _0()+44 System.Web.Mvc.Async.<> c__DisplayClass8 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 result)+38 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+ 8966925 System .Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)+1841 ) +1088
System.Data.Linq.SqlClient.ObjectReader1..ctor(IEnumerable1 source) +58
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
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +51
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary2 parameters) +52
System.Web.Mvc.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() +127 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func1 filters, ActionDescriptor actionDescriptor, IDictionary1.<BeginSynchronous>b__7(IAsyncResult _) +42 System.Web.Mvc.Async.WrappedAsyncResult
您的错误消息指出该Price列的值无法转换为a decimal.
您需要确保数据库表具有正确的列类型Price,并且包含有效数据.
此外,如果数据库中的列允许NULL值,则需要将其映射为可为空的小数 decimal? Price { get; set; }
| 归档时间: |
|
| 查看次数: |
2355 次 |
| 最近记录: |