I\'m using EF 6.1.0 and was creating a WCF Service.
First I created a Class Library containing my entities, Mappers and Context for initializing EF. I\'ve also creat
I got caught with this one because I referenced the reference property instead of the Id property.
var t = modelBuilder.Entity<CyDocument>();
t.HasIndex(b => b.DocTypeId);
I got the same error message when I had renamed my Member model to Student and I had a navigation property in some other class as:
public IList<Student> Members { get; set; }
I changed that to:
public IList<Student> Students { get; set; }
and the problem was resolved!
I got this error while defining Table-Per-Type Inheritance with Fluent API (as a class deriving from EntityTypeConfiguration<T>
) and mistakenly redefined field that was already defined in base class configuration (and both were exactly the same). I was using EntityFramework 6.2.0 nuget package.
I was also getting same error while adding migration or updating database.
The reason was I was using wrong column type
[Column("ImageType", TypeName = "varchar(20)")]
public string ImageType
{
get;
set;
}
But when I removed 20 from varchar it started working for me
[Column("ImageType", TypeName = "varchar")]
public string ImageType
{
get;
set;
}
Yup. Caught me as well because in a moment of distraction I put the literal long in there for a bigint column
i.e. HasColumnType("long")
- can you believe it?! What a clown!
Generators generally create your EF classes properly, but if you're not able to or don't want to use one then you could use a static class with some static string fields on them so that you can intellisense it quite nicely:
public static class DatabaseColumnTypes
{
/// <summary>
/// Use this for 'boolean' values.
/// </summary>
public static string BitColumn = "bit";
/// <summary>
/// Use this for 'byte' values.
/// </summary>
public static string TinyIntColumn = "tinyint";
/// <summary>
/// Use this for 'long' values.
/// </summary>
public static string BigIntColumn = "bigint";
/// <summary>
/// Use this for 'string' values.
/// </summary>
public static string VarcharColumn = "varchar";
// etc
}
Now you can do HasColumnType( DatabaseColumnTypes.BigIntColumn )
I know, I know, this is lazy, I should remember these types but every so often I find myself on Stack Overflow looking it up and this just saves time…
I just experienced the same problem. The Code First from database wizard generated one of the columns as [Column(TypeName = "date")]
.
Calling .saveChanges()
resulted in the Sequence contains no elements
.
After changing the defined column to [DataType(DataType.DateTime)]
it worked as expected.