小编hor*_*rgh的帖子

无法使EF Code First与手动更改的数据库一起使用

我已经为我的域模型类添加了两个新属性,并相应地为数据表添加了两个属性.然后我尝试启动我的mvc Web应用程序并获得了

The model backing the 'EFDbContext' context has changed since the database was created.  
Consider using Code First Migrations to update the database  
(http://go.microsoft.com/fwlink/?LinkId=238269).
Run Code Online (Sandbox Code Playgroud)

阅读以下帖子:

MVC3和Code First迁移

EF 4.3自动迁移演练

我尝试Update-Database通过Package Manager Console,但收到错误

Get-Package : ?? ??????? ????? ????????, ??????????????? ????? ????????? "ProjectName".
C:\Work\MVC\packages\EntityFramework.5.0.0\tools\EntityFramework.psm1:611 ????:40
+     $package = Get-Package -ProjectName <<<<  $project.FullName | ?{ $_.Id -eq 'EntityFramework' }
+ CategoryInfo          : InvalidArgument: (:) [Get-Package], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,NuGet.PowerShell.Commands.GetPackageCommand

The EntityFramework package is not installed on …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first asp.net-mvc-3

4
推荐指数
1
解决办法
7720
查看次数

如果角色名称包含空格,则无法使AuthorizeAttribute有效

在Windows域内联网站点上工作时,<authentication mode="Windows" />我遇到了以下问题:

[Authorize(Roles = "Domain Users, Domain Admins")]
public class MyController: Controller {...}
Run Code Online (Sandbox Code Playgroud)

由于活动目录组的名称中有空格,因此该控制器不适用于任何用户.因此,在使用带空格的角色名称(此处:AD组的名称)时,是否可以正确授权MVC(或ASP.Net)?

只是类似的问题,没有回应:

  1. AD组,其中包含用于角色授权的空格.
  2. 如果角色包含空格,如何编写AuthorizeAttribute

c# asp.net authorization asp.net-mvc-3

4
推荐指数
1
解决办法
2679
查看次数

在哪里加载数据以填充具有多个poco类的viewmodel

我必须在表单中显示一个对象(一个POCO类).

在我的控制器中,我从对象存储库中获取对象数据.

但在表单中,我还必须显示一些关于该对象的额外数据,例如国家名称而不是countryid,分配的人数(从1:N关系中获取),编辑历史(要获取)从另一个表)和'CanBeCancelled'位.

问题是:我应该把这个逻辑放在哪里?

我提出了这些替代方案:

  • 存储库本身:创建一个额外的函数,返回这个精确的viewmodel
  • 转换服务,它将类转换为viewmodel(它知道从何处获取数据)
  • 控制器:它知道在视图(模型)中显示什么数据,因此它应该从不同的存储库获取所有数据

放置此逻辑的好方法是什么(使用'this logic'我的意思是知道在存储库A中获取人数的逻辑,历史记录由存储库B获取,countryname由CountryRepository和布尔值获取'CanBeCancelled'是由StateEngine服务获取的)?

c# asp.net-mvc

4
推荐指数
1
解决办法
171
查看次数

事件默认初始值设定项

我曾经使用以下内容:

public event EventHandler OnComplete = delegate { };
Run Code Online (Sandbox Code Playgroud)

我不确定,这是如何调用的,这是一个“事件默认初始化程序”吗?

但问题似乎是当我从 EventArgs 派生、创建自己的 EventHandler 并决定使用相同的方法时。请参见:

public class MyEventArgs : EventArgs
{
    int result;
    public int Result
    {
        get
        {
            if (exceptionObject == null)
                return result;
            else
                throw new InvalidOperationException();
        }
        internal set { result = value; }
    }

    Exception exceptionObject;
    public Exception ExceptionObject
    {
        get { return exceptionObject; }
        internal set { exceptionObject = value; }
    }
}

public delegate EventHandler MyEventHandler(object sender, MyEventArgs e);

public class MyOperation
{
    public …
Run Code Online (Sandbox Code Playgroud)

c# events delegates initializer

3
推荐指数
1
解决办法
2921
查看次数

将foreach循环转换为linq代码

下面的代码按预期工作,但我想转换下面的代码使用Linq?有什么建议?

       string[] selections = "Men,Women,Boys".Split(',');           

        int _chkboxId = 0;  
        int _chkboxTextId = 1;
        try
        {
            string id = "lstchk_" + _chkboxId;
            while (!driver.FindElement(By.Id(id)).Equals(null))
            {
                string checkboxId = String.Format("lstchk{0}", _chkboxTextId);
                string checkboxName = driver.FindElement(By.Id(checkboxId)).Text;

                foreach (string match in selections)
                {
                    if (checkboxName == match.Trim())
                    {
                        //matched... do more work here...
                    }
                }
           }
Run Code Online (Sandbox Code Playgroud)

c# linq

3
推荐指数
1
解决办法
1583
查看次数

如何设置文件版本注释

我在哪里可以设置文件版本注释..?

我们可以得到它

FileVersionInfo fv = 
System.Diagnostics.FileVersionInfo.GetVersionInfo(
                   Assembly.GetExecutingAssembly().Location);
var comment = fv.Comments;
Run Code Online (Sandbox Code Playgroud)

然后我该如何设置它以便我可以在某处显示相同的内容..

.net c#

3
推荐指数
1
解决办法
4095
查看次数

无法实例化泛型类

我有一个界面

public interface ICrypto<T> : IDisposable
{
     ICryptoTransform GetDecryptor();

     ICryptoTransform GetEncryptor();

     T GetAlgorithm();
}
Run Code Online (Sandbox Code Playgroud)

我有一个实现

public class TripleDESCryptoProvider : ICrypto<TripleDESCryptoServiceProvider>
{

    public TripleDESCryptoProvider() { }

    public ICryptoTransform GetDecryptor()
    {
        return GetAlgorithm().CreateDecryptor();
    }

    public ICryptoTransform GetEncryptor()
    {
        return GetAlgorithm().CreateEncryptor();
    }

    public TripleDESCryptoServiceProvider GetAlgorithm()
    {
     ...
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个实现上面的实现的类

public class CryptoWork<T> where T : ICrypto<T>, new()
{
    protected static T _keyStore;

    public static T KeyStore
    {
        get
        {
            if (_keyStore == null)
            { …
Run Code Online (Sandbox Code Playgroud)

c# generics

3
推荐指数
1
解决办法
148
查看次数

将xml响应映射到类?

我不知道如何将一些XML表示为C#类.有没有人对如何正确映射这个xml有任何建议?以下是我的尝试:

<authenticationResponse>
  <Accounts>
    <AccountId>1</AccountId>
    <AccountId>5</AccountId>
  </Accounts>
</authenticationResponse>


public class authenticationResponse
{
    [XmlElement("Accounts")]
    [DataMember]
    public List<Account> Accounts { get; set; }
}

public class Account
{
    public long id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c# xml asp.net-web-api

3
推荐指数
1
解决办法
4266
查看次数

如何使派生的具体类隐式地转换为通用基类?

我有一个基本的抽象泛型类,它可以通过表达式获取对象的标识符:

public abstract class Entity<TId> where TId : IEquatable<TId>
{
    protected abstract Expression<Func<Entity<TId>, TId>> GetEntityId();
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从中派生(并实现抽象方法)时:

public class IntEntity : Entity<int>
{
    public int Id { get; set; }

    protected override Expression<Func<Entity<int>, int>> GetEntityId()
    {
        Expression<Func<IntEntity, int>> exp = e => e.Id;
        return exp; // CS0029 error
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到CS0029编译错误,说

无法隐式将类型' System.Linq.Expressions.Expression<System.Func<ConsoleApplication1.IntEntity,int>>' 转换为' System.Linq.Expressions.Expression<System.Func<ConsoleApplication1.Entity<int>,int>>'

我能做些什么吗?

c# generics

3
推荐指数
1
解决办法
340
查看次数

我可以以某种方式使用0x表示法长

使用SMPP协议我曾经long用来表示system_id类型字段的值unsigned int(4字节).在协议本身中,字段值以十六进制格式指定.所以我想在我的代码中保留它.在尝试比较我写的变量值时:

long id = ...;
//...
if(id == 0x80000009){...}
Run Code Online (Sandbox Code Playgroud)

并且发现java解释0x80000009int,这是签名的4字节int,因此发生溢出并且比较失败:

id         == 2147483657
0x80000009 ==-2147483639
Run Code Online (Sandbox Code Playgroud)

然后我尝试了显式类型转换,即id == (long)0x80000009- 相同的结果.然后我声明变量如下:

static final long bind_transceiver_resp = 0x80000009;
Run Code Online (Sandbox Code Playgroud)

但它仍然是一个溢出的int价值.

那么有没有办法使用0x值大于Integer.MAX_VALUE?的符号?

java

3
推荐指数
1
解决办法
789
查看次数