我手动将实体框架代码第一个表绑定到datagridview.当我将AutoSizeMode设置为AllCells并向表中添加实例时,我在Add期间得到NullReferenceException.
代码运行如下:
dbContext.Persons.Load();
myDataGridView.DataSource = dbContext.Persons.Local.ToBindingList();
myDataGridView.Columns[ "Description" ].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
Person p = new Person();
p.Name = "Tester Alfred";
p.Description = "Description"; //no more properties, only those two (Id Property is annotated as [Key]
dbContext.Persons.Add( p ); // this throws a NullReferenceException
Run Code Online (Sandbox Code Playgroud)
以下是堆栈跟踪的相关部分:
System.Data.Entity.Core.Objects.ObjectContext.AddSingleObject(EntitySet entitySet, IEntityWrapper wrappedEntity, String argumentName)
bei System.Data.Entity.Core.Objects.ObjectContext.AddObject(String entitySetName, Object entity)
bei System.Data.Entity.Internal.Linq.InternalSet`1.<>c__DisplayClassd.<Add>b__c()
bei System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName)
bei System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity)
bei System.Data.Entity.DbSet`1.Add(TEntity entity)
Run Code Online (Sandbox Code Playgroud)
表人员否则是空的.当我删除AutoSize - 指令时一切都很好.
Plattform:使用Studio 2013的.Net 4.5.1中的WInForms; 运行Win8 Pro,EF …
c# entity-framework datagridview nullreferenceexception winforms
愚蠢的我试图将从外部源接收的字节数组转换为字符串.(是的,我确实知道Encoding.GetString(byte[]).
到目前为止我所拥有的:
void myfunc()
{
byte[] rawData = new byte[ 128 ];
for( int i = 0; i < rawData.Length; ++i )
{
rawData[ i ] = 0;
}
rawData[ 0 ] = (byte)'H';
rawData[ 1 ] = (byte)'e';
rawData[ 2 ] = (byte)'l';
rawData[ 3 ] = (byte)'l';
rawData[ 4 ] = (byte)'o';
string asString = Encoding.UTF8.GetString( rawData, 0, rawData.Length );
string asRealString = Encoding.UTF8.GetString( rawData );
}
Run Code Online (Sandbox Code Playgroud)
两个字符串都包含Hello部分,但之后也包含很多\ 0,这不是我所期望的.调试器的输出:asRealString =
"Hello\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让我像"Hello"这样的字符串吗?
我做了goolge,但我得到的只是Encoding.GetString(byte[])......
编辑 …
在我的索引属性中,我检查索引是否超出范围.如果是,我扔了IndexOutOfBoundsException.
当我运行Code Analyst(在VS12中)时,它会抱怨CA1065:意外位置出现意外异常.
仅参考CA1065的描述
System.InvalidOperationException
System.NotSupportedException
System.ArgumentException
KeyNotFoundException
Run Code Online (Sandbox Code Playgroud)
允许在索引的getter中.
投掷IndexOutOfBoundsException对我来说似乎很自然,所以这里的推理是什么?(是的,我知道我可以关闭警告,我只是想知道推理)
我有一个winforms表单,我在其中使用MediaElement.一切正常(或多或少)完美.唯一的办法是,在加载媒体文件(mp3)后,访问NaturalDuration.TimeSpan.TotalSeconds会引发异常
InvalidOperatoinException:无法返回TimeSpan属性,持续时间值为automatic.
(由我自己翻译)
我如何访问timespan属性?在我找到的所有示例中都没有使用特殊设置(好吧,它们似乎是WPF本机...)
我在Windows 7上使用VisualStudio Express .Net 4,C#.
任何提示?
有没有一种简单的方法可以通过tcp/ipv4套接字获取连接到我的应用程序的机器的MAC地址?
或者更笼统地说:如果我有IP地址,在IPv4中获取相应MAC地址的最佳方法是什么?
c# ×4
.net ×2
winforms ×2
code-analyst ×1
datagridview ×1
ip-address ×1
mac-address ×1
mediaelement ×1
networking ×1
string ×1
windows ×1
wpf ×1