我想從代碼優先的方法在實體框架6中創建一個數據庫。我得到的錯誤:爲什麼實體框架在數據類型更小時嘗試創建大於8060字節的行?
Index 'PK_surveyor.CONDITIONS' row length exceeds the maximum permissible length of '8060' bytes. Could not create constraint or index. See previous errors.
類條件被定義爲這樣的:
[Table("surveyor.CONDITIONS")]
public partial class CONDITION : ISurveyComponent
{
[Key]
[Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long ID { get; set; }
[Column(Order = 1, TypeName = "char")]
public string NAME { get; set; }
[Column(Order = 2)]
[DataType(DataType.DateTime)]
public DateTime LASTUPDATED { get; set; }
[Column(Order = 3)]
public int ENABLED { get; set; }
public enum ActionTypes { JumpOnPass = 0, SetFromResponse = 1, SetResponse = 2 };
[Column(Order = 4)]
public int ACTIONTYPE { get; set; }
[NotMapped]
public ActionTypes Action
{
get
{
return (ActionTypes)ACTIONTYPE;
}
}
public enum TestTypes { AlwaysFail=0, AlwaysPass=1,PassIfEqual=11,PassIfNotEqual=12
,PassIfLessThan=13,PassIfLessThanOrEqual=14,PassIfGreaterThan=15,PassIfGreaterThanOrEqual=16
,PassIfEmpty=20,PassIfDisabled=30};
[Column(Order = 5)]
public int TESTTYPE { get; set; }
[NotMapped]
public TestTypes Test
{
get
{
return (TestTypes)TESTTYPE;
}
}
public enum LeftOperandTypes {None=-1, Response=0, Comment=1, Step=2, Club=3, Province=4, ClubPrize=5};
public int? LEFTTYPE { get; set; }
[NotMapped]
public LeftOperandTypes LeftOperandType
{
get
{
if(LEFTTYPE.HasValue)
return (LeftOperandTypes)LEFTTYPE;
return LeftOperandTypes.None;
}
}
public enum RightOperandTypes {None=-1, Response=0, AbsoluteValue=1};
public int? RIGHTTYPE { get; set; }
[NotMapped]
public RightOperandTypes RightOperandType
{
get
{
if(RIGHTTYPE.HasValue)
return (RightOperandTypes)RIGHTTYPE;
return RightOperandTypes.None;
}
}
public long? PARAMID1 { get; set; }
public long? PARAMID2 { get; set; }
public long? PARAMID3 { get; set; }
public long? PARAMID4 { get; set; }
public int? PARAMINT1 { get; set; }
public int? PARAMINT2 { get; set; }
public int? PARAMINT3 { get; set; }
}
這將產生一個錶行約592個字節+頭長。我可以看到空處理添加了幾個字節,但爲什麼EF試圖創建一個大於8060字節的行?
另外我得到的例外是要求我「查看以前的錯誤」。任何想法在哪裏看到這些?在例外情況下,他們沒有鏈接。
你想把什麼(httppost?)插入表中? – LONG
我沒有達到任何後期操作。我正在初始化一個單元測試項目中的數據庫,我可以看到第二行:\t \t _ctx = new CSATContext(「name = TestContext」); \t \t \t var hd = _ctx.HOLIDAYS.FirstOrDefault(); 它從不創建數據庫。我在這裏可以看到沒有單個字段大小會導致此問題。我懷疑這個錯誤信息是虛假的,並且在某處存在另一個問題。 – user1598521
正如原文所述,如果我知道如何找到它們,我會檢查「以前的錯誤」。我只是從EF那裏得到了一個例外消息。沒有InnerException和異常的數據字典不包含任何有用的東西。 – user1598521