尝试读取数据库时创建RESTful Web Service时出错

时间:2015-04-06 14:13:38

标签: c# asp.net entity-framework rest

我正在尝试使用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;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

在类MyData上方添加属性表。这会将类MyData映射到tblMyData。

[Table("tblMyData")]
public partial class MyData
{
    //class code here
}

目前,由于没有映射,您的代码正在尝试使用名称MyData创建表,并且您的连接字符串凭据没有足够的权限来创建表。