Я занимаюсь разработкой веб-приложения для отслеживания задач, и вы можете увидеть полный код здесь: https://github.com/KimSergey94/TaskTracker
Короче говоря, администратор, менеджер, клиент и сотрудник являются пользователями приложения, а администратор является боссомэти роли. Чтобы проиллюстрировать это, менеджер может создать задачу, полученную клиентом, и назначить ее сотруднику. Задача включает в себя статусы и статусы включает в себя комментарии. «Роли» имеют идентификатор пользователя в качестве внешнего ключа к таблице «Пользователь», в которой хранятся их адреса электронной почты и пароли. В таблице ролей хранятся идентификаторы пользователей, чтобы у них были правильные роли.
Мне нужно разработать базовую функциональность, использовать некоторые из AJAX, пользовательские фильтры, хранимые процедуры. Что-то не так с моей логикой авторизации и ролей. Итак, я был бы признателен, если бы вы посмотрели и сообщили мне обо всем, что, по вашему мнению, неправильно.
В настоящее время, когда я пытаюсь запустить приложение и инициализировать базу данных, я получаю следующую ошибку:
System.Data.SqlClient.SqlException: 'Введение ограничения FOREIGN KEY' FK_dbo.Employees_dbo.Users_UserId 'в таблице' Сотрудники 'может вызывать циклы или несколько каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION, либо измените другие ограничения FOREIGN KEY.
Код классов пользователя и сотрудника:
public class User
{
public int UserId { get; set; }
[DataType(DataType.EmailAddress)]
[Required]
public string Email { get; set; }
public string Password { get; set; }
public int RoleId { get; set; }
}
public class Employee
{
public int EmployeeId { get; set; }
//[Required(ErrorMessage = "First Name is required")]
public string FirstName { get; set; }
//[Required(ErrorMessage = "Last Name is required")]
public string LastName { get; set; }
//[Required(ErrorMessage = "Country field is required")]
public string Country { get; set; }
public string Position { get; set; }
public int Salary { get; set; }
public int UserId { get; set; }
[ForeignKey("UserId")]
public virtual User User { get; set; }
//public virtual ICollection<Task> Tasks { get; set; }
}
Globals.asax
protected void Application_Start()
{
System.Data.Entity.Database.SetInitializer<TaskTrackerContext>(new TaskTrackerDbInitializer());
var db = new TaskTrackerContext("TaskTrackerContext");
db.Database.Initialize(true);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
ModelValidatorProviders.Providers.Clear();
NinjectModule orderModule = new OrderModule();
NinjectModule serviceModule = new ServiceModule("TaskTrackerDb");
var kernel = new StandardKernel(orderModule, serviceModule);
DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel));
}
web.config:
<connectionStrings>
<add name="TaskTrackerContext"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename='|DataDirectory|\TaskTrackerContext.mdf';MultipleActiveResultSets=True; Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<!--
Initial Catalog=FormsAuth;
</appSettings>
Кстати, зачем мне это нужно Initial Catalog=FormsAuth;
?
Я заметил, что с этим параметром я не смог создать экземпляр базы данных. Я хочу получить функциональность Включить для моих моделей