我正在尝试使用C#/ ASP .Net Web API创建RESTful Web服务。我已经创建了一个基于我见过的示例显示html页面的基本服务
使用HomeController
在网络上。现在我正在尝试创建一个从数据库读取的服务,我收到一个错误:
{"Message":"An error has occurred.","ExceptionMessage":"
An error occurred when trying to create a controller of type 'MyController'.
Make sure that the controller has a parameterless public constructor."
,"ExceptionType":"System.InvalidOperationException","
...
":{"Message":"An error has occurred.","ExceptionMessage":"CREATE TABLE permission denied in database 'MyDatabase'.","ExceptionType"
:"System.Data.SqlClient.SqlException","StackTrace":"
MyController
有一个无参数构造函数:
public MyController()
{
// get values from database
MyData model = db.MyData.Find(); // exception thrown here
}
MyData
是一个简单的类,一堆属性。
Web.config文件具有正确的连接字符串。 (我经常在其他应用程序中使用此数据库)
我对错误消息感到困惑,因为它说创建表时出错。我只是想读。 即便如此,正如我所说,连接字符串是正确的,它应该能够创建一个表,如果它想。
你有什么建议?
public partial class MyData
{
private const string NONE = "(None)";
public MyData(int p1, string p2, string p3, string p4)
{
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
this.p4 = p4;
}
[Key]
public int MyId { get; set; }
[StringLength(50)]
private String _MyName;
[DisplayName("My Name")]
public string MyName
{
get
{
if (String.IsNullOrEmpty(_MyName) || String.IsNullOrWhiteSpace(_MyName))
{
return NONE;
}
else
{
return _MyName;
}
}
set
{
_MyName = value;
}
}
[Key]
[StringLength(10)]
private string _MyNumber;
[DisplayName("My Number")]
public string MyNumber
{
get
{
if (String.IsNullOrEmpty(_MyNumber) || String.IsNullOrWhiteSpace(_MyNumber))
{
return NONE;
}
else
{
return _MyNumber;
}
}
set
{
_MyNumber = value;
}
}
[StringLength(255)]
private string _MyStatus;
private int p1;
private string p2;
private string p3;
private string p4;
[DisplayName("My Status")]
public string MyStatus
{
get
{
if (String.IsNullOrEmpty(_MyStatus) || String.IsNullOrWhiteSpace(_MyStatus))
{
return NONE;
}
else
{
return _MyStatus;
}
}
set
{
_MyStatus = value;
}
}
}
答案 0 :(得分:1)
在类MyData上方添加属性表。这会将类MyData映射到tblMyData。
[Table("tblMyData")]
public partial class MyData
{
//class code here
}
目前,由于没有映射,您的代码正在尝试使用名称MyData创建表,并且您的连接字符串凭据没有足够的权限来创建表。