小编Jer*_*vel的帖子

一对多关系映射返回验证错误

根据评论中的每个建议编辑新情况:

目前我有这个映射

public ShowMap() {
        ToTable("Shows");
        HasKey(x => x.ShowID);

        Property(x => x.ShowID)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
            .IsRequired()
            .HasColumnName("ShowID");
}

public EpisodeMap() {
        ToTable("Episodes");
        HasKey(x => x.EpisodeID);

        Property(x => x.EpisodeID)
        .IsRequired()
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
        .HasColumnName("EpisodeID");

        Property(x => x.ShowID)
            .IsRequired()
            .HasColumnName("ShowID");

        Property(x => x.EpisodeNumber)
            .IsRequired()
            .HasColumnName("EpisodeNumber");
}
Run Code Online (Sandbox Code Playgroud)

这导致以下数据库:

情节

展会

但是,当运行种子方法时,我收到此错误.因为我无法从命令行命令调试变量的值Update-Database(至少,据我所知),我无法看到该属性的含义.

一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性.

当我将关系添加到映射时,我收到以下错误:

在模型生成期间检测到一个或多个验证错误:

System.Data.Entity.Edm.EdmAssociationEnd :: Multiplicity在关系'Episode_Show'中的角色'Episode_Show_Source'中无效.由于"从属角色"是指关键属性,因此从属角色的多重性的上限必须为"1".

关系:

        HasRequired(x => x.Show)
            .WithMany(x => x.Episodes)
            .HasForeignKey(x => x.EpisodeID);
Run Code Online (Sandbox Code Playgroud)

这是模型:

public class Episode {
  public int EpisodeID {get; set;}
  public int ShowID {get; set;}
  public int EpisodeNumber {get; set;} …
Run Code Online (Sandbox Code Playgroud)

c# mapping entity-framework

7
推荐指数
1
解决办法
1万
查看次数

Java ++运算符

所以我正在测试运营商,因为我用java帮助我的朋友,我偶然发现了一个奇怪的编程顺序.运行以下代码时发生了什么

public static void main(String[] args) {
    int B = 6;
    //First console print out
    System.out.println(B+=++B);
    System.out.println(B);
    B = 6;
    //Second Console print out
    System.out.println(B+=B++);
    System.out.println(B);
}
Run Code Online (Sandbox Code Playgroud)

以下代码的输出是

13
13

12   
12
Run Code Online (Sandbox Code Playgroud)

是什么原因导致第二个控制台B数学输出= 12时它自己加6,然后是++(这是+1)

java logic operators

7
推荐指数
2
解决办法
3908
查看次数

我们可以同时从CodeExpressions和文字源代码构造一个程序集吗?

我有一种情况,我的代码的一部分是CodeExpressions由用户自己生成的,另一部分是由用户自己生成的(例如:用户只需像往常一样编写代码,然后我会在编译时将其添加到我的程序集中).

是否可以生成包含这两个项目的程序集?警告:这两种方法将包含partial类,因此它们必须位于同一个程序集中.

我想到的另一种方法是将这两种方法转换为字符串表示,然后从该字符串生成程序集,但我怀疑我可以从用户生成的类型中获取源代码(在编译时).

根据这个想法,我可以将CodeExpressions生成的代码写入文本文件并将其与.cs文件结合起来.时间表看起来像这样:

  • 用户写了他的课
  • CodeDom树以编程方式设置
  • 用户构建项目
  • CodeDom生成文本文件的源
  • 程序读取用户定义.cs文件的内容
  • 程序读取生成的文本文件
  • 程序结合了这两个
  • 程序.dll从组合源代码中创建一个新的

我可以跳过将我生成的CodeDom源写入和读取文本文件的(冗余)步骤,并简单地将其写入内存,当然.事实上,使用预处理T4模板并将这些模板的结果加载到内存中并从该字符串编译程序集可能最简单.

正如你所看到的,这是非常混乱的,但现在它看起来是最可行的.我是否看过任何可能使这更容易的选项?

背景:

我正在创建一个库,该库将创建一个包含用户定义的类的程序集.这种方式的工作方式如下:

  • 用户在他的项目中引用我的库
  • 用户创建新TinyTypeSetup实例
  • 用户为其添加了Tiny Type定义
  • 用户运行程序
  • 程序通过CodeDom从给定类型生成程序集

我现在想要添加的是用户可以创建自己的源文件并立即将这些文件添加到生成的程序集中.这将允许用户使用他自己的方法指定部分类,除了我自己生成的那些.

c# code-generation codedom .net-assembly

7
推荐指数
1
解决办法
279
查看次数

如何使控制器的名称连字符" - "分开?

我能用到了

[ActionName("My-Action-Name")]
public ActionResult MyActionName()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

但我在更改控制器名称时遇到问题.是否有一些注释可用于在MVC 4中分隔控制器名称连字符( - )?

有点像这样:

[ControllerName("My-Controller-Name")]
public class MyControllerName : Controller
{

}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-mvc-4

7
推荐指数
2
解决办法
4127
查看次数

我可以将匿名对象传递给期望类型为object的引用参数的方法吗?

我想知道为什么第一次呼叫Bar(ref object)不起作用而第二次呼叫不起作用.考虑到我以object任何一种方式传递一个类型,传递一个匿名类型Foo(object)工作正常,似乎很傻.为什么ref,与内存位置有关的东西会影响调用Bar()

请考虑以下代码段:

static void Foo(object obj)
{ }

static void Bar(ref object obj)
{ }

static void Main()
{
    // Compiles
    var a = new { };
    Foo(a);

    // Does not compile
    var b = new { };
    Bar(ref b);

    // Compiles
    object c = new { };
    Bar(ref c);
}
Run Code Online (Sandbox Code Playgroud)

我在下面的答案中看到了如何编译代码的建议,但这不是我追求的.我想特别知道为什么ref在将匿名类型传递到正常Foo()工作时使其成为参数会阻止编译.

.net c# anonymous-types ref

7
推荐指数
2
解决办法
968
查看次数

违反主要密钥实体框架代码

我已经开始使用C#了,我想创建自己的数据库.

我有两个型号

public class AModel 
{
    public Guid ID { get; private set; }
    public string Name { get; set; }
    public int Count { get; set; }
    public AModel()
    {
        this.ID = Guid.NewGuid();
    }
}

public class BModel 
{
    public Guid ID { get; private set; }
    public string Name { get; set; }
    public AModel Model { get; set; }
    public BModel()
    {
        this.ID = Guid.NewGuid();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将BModel保存到DB时,我收到此错误:

违反PRIMARY KEY约束'PK_dbo.AModels'.无法在对象'dbo.AModels'中插入重复键.重复键值为(48ee1711-8da4-46c1-a714-19e985211fed).\ r \n语句已终止.

我以为它会被解决

modelBuilder.Entity<BModel>().HasRequired(t => t.Model).WithMany();
Run Code Online (Sandbox Code Playgroud)

但看起来我完全迷失了.这个简单的例子可以帮助我吗?

c# entity-framework ef-fluent-api

7
推荐指数
1
解决办法
1万
查看次数

当我们创建并启动一个新的.NET线程时,它是否会创建一个新的OS级别线程?

当我们以这种方式创建一个新线程时:

Threading.Thread t = new Threading.Thread(() => { Console.WriteLine("My New thread"); });
t.Start();
Run Code Online (Sandbox Code Playgroud)

它是否也会创建一个OS级别的线程?

.net c# multithreading

7
推荐指数
1
解决办法
119
查看次数

执行n ++后的奇怪答案

执行以下代码片段后,为什么int d 25而不是26的值?

int n = 20;
int d = n++ + 5;

Console.WriteLine(d);
Run Code Online (Sandbox Code Playgroud)

c#

6
推荐指数
1
解决办法
1512
查看次数

打印的PDF文件与原始PDF文件不同

我使用PDFBox 1.8.3 jar在打印机(HW)中打印PDF文件.我以正常和程序两种方式打印PDF文件.当我使用常规方式打印PDF时,我将原始pdf文件作为打印文档.但是当我使用我的代码时,我无法将原始的pdf文件作为打印输出.我可以在打印文件中看到一些变化; 例如,对齐,字体和墨水与原始文档不同.

ReadPDF readPDF = new ReadPDF();
PDDocument document = readPDF.loadPdf(path);
document.addPage(new PDPage());
printerJob.setPageable(document);
printRequestAttributeSet.add(new PageRanges(1,3));
printerJob.print(printRequestAttributeSet);
Run Code Online (Sandbox Code Playgroud)

此外,我尝试将PDFBox jar 1.8.3升级为即将推出的jar 2.0.0.我遇到了一些困难(例如:在PDFBox 2.0.0中我无法使用printerJob.setPageable(document);).你能帮我解决这个问题吗?

java pdfbox

6
推荐指数
1
解决办法
407
查看次数

在安装Roslyn之后,为什么我的IDE会抱怨新语法?

我正在使用Visual Studio 2013,我写这个简单的代码:

class Program
{
    private static void Main(string[] args)
    {
        Console.WriteLine(string error = "Hello world!");
    }
}
Run Code Online (Sandbox Code Playgroud)

显然这不是一个有效的C#代码,但奇怪的部分是即使我看到两个错误,代码正在编译并正常工作:

在此输入图像描述

我认为migth是相关的Roslyn 因为我安装了Roslyn User Preview和其他扩展,但我正在使用的项目模板是标准Console Application模板.那么,为什么这个代码正在编译,即使有三个编译器错误?我试过这个VS 2012并且它没有编译.是编译器错误,还是在下一个版本中有效C#

这是我看到的错误列表VS 2012:

在此输入图像描述

但肯定没有错误VS 2013.

注意:我不确定它是否相关,但我也在使用Resharper.

c# resharper compiler-errors roslyn visual-studio-2013

6
推荐指数
2
解决办法
299
查看次数