Я хотел бы создать веб-сайт с помощью Visual Studio 2012 для Интернета, который имеет базу данных и сгенерированный пользовательский интерфейс, такой как у нас, если мы используем проект шаблона:
Веб-приложение с динамическими объектами данных
Но я также хотел бы иметь страницу входа, такую как предоставленная проектом шаблона:
Приложение веб-форм Asp.Net
Я обнаружил, что шаблоны отлично подходят для любой из этих задач, но довольно плохи, если вам нужны оба из них.
Если я начну с шаблона веб-приложения Dynamic Data Entities, я получу отличные страницы для базы данных с очень небольшим количеством кода, но мне не удается заставить код входа в систему работать (также, я не думаю, что мне следует писать этот код в любом случае, поскольку он уже существует в приложении веб-форм Asp.Net). Всякий раз, когда я пытаюсь, я попадаю в ужасный беспорядок. Я действительно не хочу узнавать об аутентификации, членстве и файлах cookie, или «как это происходит», или о чем-то подобном. Я хочу, чтобы среда .Net справилась со всем этим и просто сообщила мне, какое имя пользователя имеет лицо, просматривающее страницу. Это все. И есть способ сделать это с помощью шаблона Asp.Net Web Forms Application.
Но если я начну с шаблона Asp.Net Web Forms Application, то логин будет работать из коробки ... но потом я попаду в ужасный беспорядок, пытаясь создать пользовательский интерфейс для базы данных! Но в этом нет необходимости, учитывая, что этот код уже существует в шаблоне веб-приложения динамических сущностей данных. Опять же, я действительно не хочу изучать, как он это делает, я просто хочу использовать его, чтобы делать вещи за меня, чтобы мне не приходилось этого делать. Я не хочу рассказывать ему, как обновлять, удалять и т. Д., И мне не нужно использовать шаблон веб-приложения Dynamic Data Entities, но тогда я не могу получить данные для входа в систему.
Как бы то ни было, я вырвал большую часть волос с помощью того, что, как я думал, будет довольно простой задачей: создать веб-сайт с входом / регистрацией с простой базой данных, используя подход Code First Entities. По моему опыту, если вы хотите иметь базу данных, но без входа в систему, вы смеетесь. Если вы хотите иметь логин, но не иметь пользовательского интерфейса базы данных, вы смеетесь. Если вы хотите иметь и то, и другое, впереди вас ждет много боли, если только вы не супер-пуперский технологический эксперт Microsoft, который живет и дышит этим ... или вы знаете "трюк" (который, вероятно, существует где-то на каком-то форуме).
В любом случае, мой вопрос, что мне здесь не хватает? Есть ли веб-сайт с целым набором других шаблонов, на котором есть шаблон, который объединяет веб-формы (с автоматическим контролем входа / членства) с веб-приложением Dynamic Data Entities, которое отлично справляется с отображением таблиц и позволяет редактировать? Мне трудно поверить, что Microsoft предполагала, что я должен знать, как делать все, что делает веб-приложение Dynamic Data Entities и это приложение веб-форм Asp.Net, чтобы получить обе функции.
У меня ушла неделя на то, чтобы понять, как заставить «Enable-Migrations» работать в типе шаблона веб-форм ... По сути, каждый маленький шаг был огромной битвой, требующей чтения форума за форумом, чтобы обнаружить маленькие «хитрости». Но, в конце концов, все, что мне действительно нужно, это шаблон, который сочетает в себе возможности веб-приложения динамических сущностей данных (то есть веб-страницы, управляемые данными) с возможностью веб-форм (то есть вход пользователя) и для публикации его в Azure. Я думал, это будет просто. Но оказалось, что это был кошмар, и на самом деле я полностью застрял.
Обновлять:
Я только что потратил еще полдня, пытаясь заставить это работать, следуя совету на http://msdn.microsoft.com/en-us/library/ee923692(v=vs.100).aspx. Но у меня не работает. Не должно быть так сложно. Это не должно требовать такого уровня возни, чтобы создать такой общий формат веб-сайта: база данных с пользовательским интерфейсом и логином.
Теперь я вернулся к первой проблеме, с которой я столкнулся несколько дней назад, которая каким-то образом исчезла, но я понятия не имею, как:
PM> Enable-Migrations System.ArgumentException: неверный параметр. (Исключение из HRESULT: 0x80070057 (E_INVALIDARG))
Трассировка стека сервера: в EnvDTE.Properties.Item (индекс объекта) в System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage (IntPtr md, Object [] args, Object server, Object [] и outArgs) в System.Runtime.Remoting .Messaging.StackBuilderSink.SyncProcessMessage (сообщение IMessage)
Исключение повторно генерируется в [0]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData и msgData, тип IntDTE. Элемент (индекс объекта) в System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetPropertyValue [T] (проект проекта, String propertyName) в System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade (String configurationTypeName) в System.Data. Entity.Migrations.EnableMigrationsCommand.FindContextToEnable (String contextTypeName) в System.Data.Entity.Migrations.EnableMigrationsCommand. ‹> C_ DisplayClass2.‹. Ctor> b _0 () в System.Data.Entity.Migrations .MigrationsDomainCommand.Execute (команда действия) Неверный параметр. (Исключение из HRESULT: 0x80070057 (E_INVALIDARG))
На этом я собираюсь сдаться. Я должен отказаться, потому что после недели попыток мне удалось создать веб-сайт в Azure с базой данных и пользовательским интерфейсом, но без входа в систему ИЛИ веб-сайт в Azure с входом в систему, но без пользовательского интерфейса базы данных. Для меня создать представление сетки для каждой из моих таблиц и подключить RowChange, UpdateMethod, DeleteMethod и т. Д. Вручную (то есть без использования динамических структур данных) было бы смешно, учитывая, что каркасы существуют (это просто слишком сложно заставить его работать, если я не использую этот шаблон с самого начала, но если я использую этот шаблон, у меня нет страницы входа!). Во всяком случае, теперь эта ошибка «Параметр неверен» снова появляется, поэтому я хожу по кругу.