Я буду использовать Visual Studio 2015, SQL Server 2014, EF 6, MVC 5. EF бросает следующее сообщение об ошибке для меня на SaveChanges()
:Ошибка преобразования VARCHAR в VARBINARY, но у меня нет VARBINARY колонки
Неявное преобразование из типа данных nvarchar в varbinary (max) недопустимо. Используйте функцию CONVERT для запуска этого запроса.
Я не могу понять, что это неправильно, потому что я не имею никаких varbinary(max)
колонн; У меня никогда не было. Почему он пытается конвертировать между ними? В случае, если это имеет значение, я попытался переключить столбцы на varchar
, но та же проблема возникает (с varchar в ошибке вместо nvarchar). Как я могу исправить эту проблему?
меня Миграции выключил, помещая это в MyContext
конструктору: контекст
Database.SetInitializer<NxContext>(null);
EF:
public class MyContext : DbContext
{
public MyContext() : base("MyContext")
{
Database.SetInitializer<MyContext>(null);
}
public DbSet<Person> Persons { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new PersonMap());
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
Базовый класс:
public class Person
{
public int Id { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
отображение EF. Я попытался указать типы столбцов HasColumnType("nvarchar")
, но это не повлияло. (Это по умолчанию для EF в любом случае, так что это не должно быть необходимым.)
public class PersonMap : EntityTypeConfiguration<Person>
{
public PersonMap()
{
Property(u => u.Email).IsRequired().HasMaxLength(320);
Property(u => u.FirstName).IsRequired().HasMaxLength(75);
Property(u => u.LastName).IsRequired().HasMaxLength(75);
}
}
Упрощенный метод, который обновляет БД:
public class PersonService : IPersonService
{
public void Create()
{
using (var db = new MyContext())
{
var person = new Person
{
Email = "[email protected]",
FirstName = "TestFN",
LastName = "TestLN"
};
db.Persons.Add(person);
db.SaveChanges(); // error thrown here
}
}
}
DB схемы:
Вы обновили файл '.edmx' .. как-то в вашей схеме таблицы, когда вы изначально создали ваши таблицы. – MethodMan
@MethodMan У меня нет файла .edmx, насколько я знаю. ... – vaindil
Действительно ли этот код? Если да, можете ли вы показать свои миграции? Вызывается ли ошибка при создании контекста или при сохранении изменений? – Jcl