我正在使用EntityFramework来保存我的实体。
我的问题是,当通过WCF发送在Silverlight中构造的实体进行持久化时,出现错误“无法从类型为'CarterShop.Commerce.Entities.ManufacturedItemRequirement []'的固定大小的数组中删除项目。
我正在插入一个具有ManufacturedItemRequirements ICollection的实体(ManufacturedItem)。实体框架应该允许我将其作为POCO对象“添加”到DbContext并坚持下去,但是由于某种原因它抱怨集合。
有人遇到过这个问题吗?基本上我不知道它在抱怨什么。错误来自System.Data内部:
at System.Data.Objects.Internal.PocoPropertyAccessorStrategy.CollectionRemove(RelatedEnd relatedEnd, Object value)
at System.Data.Objects.Internal.EntityWrapper`1.CollectionRemove(RelatedEnd relatedEnd, Object value)
at System.Data.Objects.DataClasses.EntityCollection`1.RemoveFromObjectCache(IEntityWrapper wrappedEntity)
at System.Data.Objects.ObjectStateManager.DegradePromotedRelationships()
at System.Data.Objects.DataClasses.RelationshipManager.AddRelatedEntitiesToObjectStateManager(Boolean doAttach)
at System.Data.Objects.ObjectContext.AddObject(String entitySetName, Object entity)
at System.Data.Entity.Internal.Linq.InternalSet`1.<>c__DisplayClass5.<Add>b__4()
at System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
at System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
at System.Data.Entity.DbSet`1.Add(TEntity entity)
at Commerce.Model.Repositories.RepositoryBase`1.Add(T entity) in C:\OclProjects 4.1\CarterShop\CarterShop.Commerce.Model\Repositories\RepositoryBase.cs:line 28
at CarterShop.Commerce.Services.Implementation.StockItemService.CreateManufacturedItem(ManufacturedItem manufactedItem, Boolean createDefinitionAswell) in C:\OclProjects 4.1\CarterShop\CarterShop.Commerce.Services\Implementation\StockItemService.cs:line 137
Run Code Online (Sandbox Code Playgroud)
我基本上是在做:
ManufacturedItem item = new ManufacturedItem();
item.ManufacturedItemRequirements.Add(new ManufacturedItemRequirement() { Quantity = 1; DefinitionId = 5 });
// Send …Run Code Online (Sandbox Code Playgroud) 我试图在我的.cpp文件中调用以下宏:
#define IAP_ROM_LOCATION 0x1FFF1FF1UL
#define IAP_EXECUTE_CMD(a, b) ((void (*)())(IAP_ROM_LOCATION))(a, b)
Run Code Online (Sandbox Code Playgroud)
但是,当我像这样调用所述函数时:
IAP_EXECUTE_CMD(0, 0);
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,说明有太多的参数?这怎么样?我会很感激任何指针.
开发环境是Cortex-M3的GCC.
我正在尝试使用官方的Mongo dockerfile来启动数据库,我正在使用-v命令将本地目录映射到/data容器内部。
作为的一部分Dockerfile,它将尝试将该目录授予用户mongodb:
RUN mkdir -p /data/db /data/configdb \
&& chown -R mongodb:mongodb /data/db /data/configdb
VOLUME /data/db /data/configdb
Run Code Online (Sandbox Code Playgroud)
但是,使用以下命令将失败:
chown: changing ownership of '/data/db': Permission denied
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?我找不到关于此的任何文档-肯定容器应该对映射目录具有完全权限,因为它已在docker run命令中明确传递:
docker run -d --name mongocontainer -v R:\mongodata:/data/db -p 3000:27017 mongo:latest
Run Code Online (Sandbox Code Playgroud) 我有一个uint32来序列化到MongoDB.
我曾经能够使用https://jira.mongodb.org/browse/CSHARP-252中的以下代码执行此操作
public class AlwaysAllowUInt32OverflowConvention : ISerializationOptionsConvention
{
public IBsonSerializationOptions GetSerializationOptions(MemberInfo memberInfo)
{
Type type = null;
var fieldInfo = memberInfo as FieldInfo;
if (fieldInfo != null)
{
type = fieldInfo.FieldType;
}
var propertyInfo = memberInfo as PropertyInfo;
if (propertyInfo != null)
{
type = propertyInfo.PropertyType;
}
if (type == typeof(uint))
{
return new RepresentationSerializationOptions(BsonType.Int32) { AllowOverflow = true };
}
else
{
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,在新的MongoDB库ISerializationOptionsConvention和RepresentationSerializationOptions不存在.我已经看过了,看不出如何注册默认的ConventionPack(?)以允许uint32在新库上溢出int32.
如何在不向我的POCO 添加BsonRepresentation属性的情况下执行此操作?
我想在我的网站上显示多种语言和UI文化.我启用了IIS 7标志,它自动从浏览器中获取文化,如下所示:
<globalization
enableClientBasedCulture="true"
culture="en-GB"
uiCulture="auto:en"/>
Run Code Online (Sandbox Code Playgroud)
这非常有效,因为加载了正确的Resources文件,并显示正确的文化(GB为0.00; DE为0,00).
然而,这有一个意外的干扰我的外部服务的问题,例如这里是与PayPal接口的代码.
var paymentDetails = new PaymentDetailsType
{
ItemTotal = new BasicAmountType
{
currencyID = currencyCode,
Value = basket.SubTotal.ToString("0.00")
},
...
}
Run Code Online (Sandbox Code Playgroud)
这段代码基本上创建了一个像这样格式化的字符串'50.25',但是当PayPal总是需要点小数点时,当选择具有逗号作为小数点(例如DE - 德语)的文化时,ToString("0.00")生成'50,25'因此我的代码失败.
什么是纠正这个的最佳方法?我仍然希望将文化设置为用户的文化,但是我想设置我的代码的某些部分以使用我自己的文化.
我知道我可以用特定的文化来养活这种ToString()方法,但这看起来非常苛刻.更专业的清洁方法?
.net ×1
asp.net-mvc ×1
c ×1
c# ×1
culture ×1
docker ×1
dockerfile ×1
embedded ×1
gcc ×1
localization ×1
mongodb ×1
silverlight ×1
wcf ×1