新手问题:需要有关ContextTypeName的帮助

Kas*_*sen 6 asp.net

我在asp.net网站上关注Contoso大学的教程,一切正常.我的下一步是在我自己的新网站上复制一些内容.我添加了一个有效的EntityDataSource:

    <asp:EntityDataSource ID="ProductTypeEntityDataSource" runat="server" 
        ConnectionString="name=MyWebsite2011Entities" 
        DefaultContainerName="MyWebsite2011Entities" EnableFlattening="False" 
        EntitySetName="product_type">
Run Code Online (Sandbox Code Playgroud)

根据教程,使用ContextTypeName替换ConnectionString和DefaultContainerName是个好主意.

"在EntityDataSource控件的标记中,删除ConnectionString和DefaultContainerName属性,并用ContextTypeName ="ContosoUniversity.DAL.SchoolEntities"属性替换它们.这是您每次创建EntityDataSource控件时应该进行的更改,除非您需要使用与在对象上下文类中硬编码的连接不同的连接."

在他们有以下内容的教程中,这对我来说很好用:

    <asp:EntityDataSource ID="StudentsEntityDataSource" runat="server"
        ContextTypeName="ContosoUniversity.DAL.SchoolEntities"
        EnableFlattening="False"
        EntitySetName="People"
        EnableDelete="True" EnableUpdate="True">
    </asp:EntityDataSource>
Run Code Online (Sandbox Code Playgroud)

我(除了项目名称)的不同之处在于我的实体模型没有放在DAL文件夹中.相反,我接受了Visual Web Developer的默认文件夹名称建议.我相信它是"App_Code".但ContextTypeName ="MyWebsite2011.App_Code.MyWebsite2011Entities"不起作用.当我启动浏览器时,它抱怨无法读取MyWebsite2011.App_Code.MyWebsite2011Entities类型.

    <asp:EntityDataSource ID="ProductTypeEntityDataSource" runat="server" 
        ContextTypeName="MyWebsite2011.App_Code.MyWebsite2011Entities"
        EnableFlattening="False" EntitySetName="product_type">
Run Code Online (Sandbox Code Playgroud)

如何找到要放入的正确ContextTypeName?正如我所说,ConnectionString和DefaultContainerName工作,所以我猜MyWebsite2011Entities是好的.任何提示都将受到赞赏,因为我不知道命名约定或寻找什么.

dle*_*lev 11

打开声明Context的.cs文件,并在namespace声明后立即查看文本.那是你班级的命名空间.你的ContextTypeName应该是<namespace>.<classname>(当然没有<>括号.)

  • @Kasper没问题!请将此标记为正确答案. (2认同)