我在breeze.js中找到关于枚举支持的唯一内容是uservoice上的this feature suggestion,最近在0.82中被标记为已关闭。 我目前正在使用最新版本,0.84.3。
更新 我首先在EF 5.0.0中使用代码.net 4.5。当启动应用程序并且breeze请求元数据时,EF创建空数据库,我的枚举属性在数据库中作为int,因此该部分是正常的。
但是,当我向模型添加枚举属性时,当breeze尝试解析元数据时,我得到了异常:
Uncaught Error: Unable to locate an 'Type' by the name: ItemType:#TestApp.Models breeze.debug.js:5051
getTypeFromMap breeze.debug.js:5051
ctor.getEntityType breeze.debug.js:5028
ctor._updateProperty breeze.debug.js:6056
ctor._fixup breeze.debug.js:6133
ctor._fixup breeze.debug.js:6132
ctor.addEntityType breeze.debug.js:4702
convertFromODataEntityType
这是我的模型(简化):
public enum ItemType
{
Ordered,
Approved,
Misc
}
public class Item
{
public long Id { get; set; }
public ItemType Type { get; set; }
}
我在哪里弄错了?有枚举的工作样本吗?
答案 0 :(得分:2)
我只是尝试将您的ItemType枚举添加到我们的一个模型(微风DocCode示例中的ToDo模型)而没有任何问题。
我不确定你遇到了什么。所以有两个建议,
1)尝试更新(破解)breeze samples zip中附带的DocCode示例以使用您的ItemType枚举(详细信息如下),然后运行任何基本的ToDo测试。
// In DocCode/Models/ToDoItem.cs
namespace Todo.Models
{
public class TodoItem
{
public int Id { get; set; } // 42
[Required, StringLength(maximumLength: 30)] // Validation rules
public string Description { get; set; } // "Get milk"
public System.DateTime CreatedAt { get; set; } // 25 August 2012, 9am PST
public bool IsDone { get; set; } // false
public bool IsArchived { get; set; } // false
// YOUR ENUM PROPERTY
public ItemType Type { get; set; }
}
// YOUR ENUM TYPE
public enum ItemType {
Ordered,
Approved,
Misc
}
}
// In DocCode/Models/ToDoDatabaseInitializer
private static TodoItem CreateTodo(string description, bool isDone, bool isArchived)
{
_baseCreatedAtDate = _baseCreatedAtDate.AddMinutes(1);
return new TodoItem
{
CreatedAt = _baseCreatedAtDate,
Description = description,
IsDone = isDone,
IsArchived = isArchived,
// YOUR ENUM PROPERTY
Type = ItemType.Ordered
};
}
或
2)通过breeze@ideablade.com向我发送(Jay Traband)项目的精简版。