【发布时间】:2013-03-11 13:09:17
【问题描述】:
我刚刚通过创建实体框架代码优先模型完成了相当于 Hello World 的工作(我编写了其他 C# 程序,但没有使用实体框架)。我创建了一个这样的模型:
class Preferences
{
[Key]
public string StationName { get; set; }
[MaxLength(30)]
public string MainDatabase { get; set; }
[MaxLength(30)]
public string DefaultSequence { get; set; }
}
然后有一个小程序来添加记录
var newPrefs = new Preferences
{
StationName = "MATT",
DefaultSequence = "NONE",
MainDatabase = "NONE"
};
Preferences prefs = foo.Preferences.Add(newPrefs);
然后尝试创建数据库并在添加主键时失败并出现错误
"BLOB/TEXT column 'StationName' used in key specification without a key length"
因为它使用数据类型“mediumtext”而不是 CHAR 或 VARCHAR 并且 MySQL 不能使用该类型作为键。
是否有一种或多或少与数据库无关的方法可以告诉 MySQL 使用键列的首选类型?还是我只需要放弃并制作一个整数键?
我也尝试过这样的设计变体,但没有任何效果。
class Preferences
{
[Key,DataType("CHAR"),StringLength(30)]
public string StationName { get; set; }
[MaxLength(30)]
public string MainDatabase { get; set; }
[MaxLength(30)]
public string DefaultSequence { get; set; }
}
感谢您的帮助。
【问题讨论】:
标签: c# mysql entity-framework-4 key