У меня есть веб-сайт ASP.NET 4 Dynamic Data, который работает с довольно простым набором таблиц базы данных, представленных через модель Entity Framework в другой сборке. Я не хочу создавать все таблиц в модели EF, поэтому в моем файле global.asax я инициализировал модель по умолчанию следующим образом:
DefaultModel.RegisterContext( typeof( MyCompany.MyProject.DataModel.DataContext ), new ContextConfiguration() { ScaffoldAllTables = false } );
В документах MSDN (и комментариях в файле global.asax) говорится, что теперь я должен иметь возможность выборочно включать поддержку отдельных таблиц путем добавления атрибута [ScaffoldTable(true)]
к их частичному классу "собеседника". Я сделал это так:
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.DynamicData;
namespace MyCompany.MyProject.DataModel
{
[MetadataType( typeof( InHouseClaimMetadata ) )]
[ScaffoldTable( true )]
public partial class InHouseClaim
{
[DisplayName( "In-House Claims" )]
[TableName( "In-House Claims" )]
public class InHouseClaimMetadata
{
[DisplayName( "Reporting Date" )]
public object ReportingDate { get; set; }
// etc etc...
}
}
}
Но при загрузке Default.aspx я получаю следующее сообщение об ошибке:
Нет доступных таблиц. Убедитесь, что хотя бы одна модель данных
зарегистрирован в Global.asax и леса включены или внедрены
пользовательские страницы.
Я заставил это работать в подобных сценариях раньше; Единственное, что отличается от этой попытки, это то, что моя модель EF представляет собой собственную сборку. Если я изменю global.asax, чтобы продолжить работу и подготовить все таблицы, все будет работать нормально. Но, очевидно, я этого не хочу. Я тщательно следил за тем, чтобы пространство имен для класса частичных метаданных совпадало с пространством имен контекста данных EF.
Так что я в тупике ...