当我的密钥名称(索引,主键和外键)由Add-Migration生成时,我不能有[.](句点),所以我尝试编写CSharpMigrationCodeGenerator,但不幸的是,这似乎不允许您要更改外键或索引名称.主键名称可以设置为覆盖create table的一部分:
protected override void Generate(
CreateTableOperation createTableOperation, IndentedTextWriter writer)
{
createTableOperation.PrimaryKey.Name = "USE THIS NAME";
base.Generate(createTableOperation, writer);
}
Run Code Online (Sandbox Code Playgroud)
但我真正需要的是一种方法来确保它刚刚删除完全停止(这意味着覆盖自定义名称生成器) - 但我看不到如何做到这一点.
当它从旧式的ADO.NET进入实体框架6时,我有点新鲜,所以请耐心等待.
我正在尝试创建一个新的WPF MVVM项目以及一些WinForms,它们将直接使用DBContext而不与EF 6进行数据绑定.
使用Visual Studio 2013实体框架向导,我通过逆向工程创建了代码优先于业务服务器上的当前数据库.然后我将数据模型类与上下文分开
这是DbContext代码:
namespace EFModels
{
public partial class MyDataContext : DbContext
{
public MyDataContext () : base("name=MyDataContext")
{
}
public virtual DbSet<Calibration> Calibrations { get; set; }
public virtual DbSet<OrderDetail> OrderDetails { get; set; }
public virtual DbSet<OrderHistory> OrderHistories { get; set; }
public virtual DbSet<WorkDetail> WorkDetails { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<WorkDetail>()
.HasMany(e => e.Calibrations)
.WithOptional(e => e.WorkDetail)
.HasForeignKey(e => e.WorkID);
}
}
} …Run Code Online (Sandbox Code Playgroud) 我很困惑为什么我收到"Ninject.ActivationException:错误激活字符串没有匹配的绑定可用,并且类型不可自绑定"在随机绑定中.如果我保留IMedia的绑定,它将抛出ActivationException,但如果我使用CallbackProvider它就可以工作.所有这些类的结构都相同,只有几个不同的属性.我很困惑为什么ILocationType,IMedia和IFarmDataContext抛出ActivationException而其他人没有.有任何想法吗?
/******************************
* Core Types
******************************/
Bind<IFarmDataContext>().ToProvider(new CallbackProvider<IFarmDataContext>(delegate { return new FarmDataContext(); }));
//Media
Bind<IMedia>().To<Media>(); //blows up
//Bind<IMedia>().ToProvider(new CallbackProvider<IMedia>(delegate { return new Media(); }));
Bind<IMediaType>().To<MediaType>();
Bind<IMediaRelated>().To<MediaRelated>();
//Location
Bind<ILocation>().To<Location>();
Bind<ILocationType>().ToProvider(new CallbackProvider<ILocationType>(delegate { return new LocationType(); }));
Bind<ILocationDetail>().To<LocationDetail>();
Run Code Online (Sandbox Code Playgroud) 所以,过去一个月我一直在学习C#,而目前我正在与Binary Trees进行斗争.
我的问题是,如何将我的树调用到控制台窗口?我试过Console.WriteLine(tree.Data);但这似乎写54到我的控制台窗口.
如果你需要检查一下,这是我的代码:
主文件
static void Main(string[] args)
{
//Creating the Nodes for the Tree
Node<int> tree = new Node<int>('6');
tree.Left = new Node<int>('2');
tree.Right = new Node<int>('5');
Console.WriteLine("Binary Tree Display");
Console.WriteLine(tree.Data);
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
节点类
class Node<T> where T : IComparable
{
private T data;
public Node<T> Left, Right;
public Node(T item)
{
data = item;
Left = null;
Right = null;
}
public T Data
{
set { data = value; }
get { return data; …Run Code Online (Sandbox Code Playgroud) 我在WPF C#中做了一个简单的程序而且我有很多TextBoxes- 每个都TextBox做同样的事情而且我很懒都为每个事件编写每个事件TextBox.那么,有没有办法如何TextBox通过一个事件服务所有人?
有一个简短的代码:
private void OnMouseLeft(object sender, MouseButtonEventArgs e)
{
TextBox1.Text = string.Empty;
TextBox1.Foreground = Brushes.Black;
}
private void OnMouseLeft1(object sender, MouseButtonEventArgs e)
{
TextBox2.Text = string.Empty;
TextBox2.Foreground = Brushes.Black;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!:)
围绕着这个我的大脑无济于事,想知道是否有人可以提供帮助?
得到一个非常令人沮丧的演员问题,我肯定会有一个快速回答,但可能只是由于我对泛型类型推断或其他东西的有限理解而发生.
提前致谢!
场景是一个向导站点的"步骤"ViewModel.我正在为每个人创建Builder类,并使用工厂来获取特定的构建器,以获取返回给我的步骤,这是一个IStepViewModel的集合.
public interface IStepViewModelBuilderFactory
{
IStepModelBuilder<T> Create<T>(T stepViewModel) where T : IStepViewModel;
void Release<T>(IStepModelBuilder<T> stepViewModelBuilder) where T : IStepViewModel;
}
public interface IStepViewModel
{
}
public interface IStepModelBuilder<TStepViewModel> : IModelBuilder<TStepViewModel> where TStepViewModel : IStepViewModel
{
}
public class SpecificViewModelBuilder : IStepModelBuilder<SpecificStepViewModel>
{
}
public class SpecificStepViewModel: StepViewModel
{
}
public abstract class StepViewModel : IStepViewModel
{
}
Run Code Online (Sandbox Code Playgroud)
失败的测试!
[Test]
public void TestResolution()
{
var factory = this.container.Resolve<IStepViewModelBuilderFactory>();
IStepViewModel viewModel = new SpecificStepViewModel();
var builder = factory.Create(viewModel); // …Run Code Online (Sandbox Code Playgroud) 在我提出有关存储数据的问题后,有人建议我可以使用 XML,然后通过使用 Base64 对其进行编码来混淆文件。我喜欢这个想法,并且我已经在 XML 中实现了我想要的,但我不知道如何将其保存为 Base64。到目前为止,这是我的代码:
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter write = XmlWriter.Create("C:\\Users\\Andy\\Desktop\\database.xml", settings);
write.WriteStartDocument();
write.WriteStartElement("Database");
write.WriteStartElement("Entry");
write.WriteAttributeString("key", "value");
write.WriteEndElement();
write.WriteEndElement();
write.Flush();
write.Close();
Run Code Online (Sandbox Code Playgroud) 我试图了解继承如何在C#中工作.我写了以下代码:
class Program
{
static void Main(string[] args)
{
Animal animal = new Dog();
animal.OverRideMe();
//animal.NewMethod();
Dog dog = (Dog)animal;
dog.OverRideMe();
dog.NewMethod();
Console.Read();
}
}
public abstract class Animal
{
public Animal()
{
Console.WriteLine("Base Constructor");
}
public virtual void OverRideMe()
{
Console.WriteLine("In Base Class's OverRideMe");
Console.Read();
}
}
public class Dog : Animal
{
public Dog()
{
Console.WriteLine("Derived Constructor");
}
public override void OverRideMe()
{
Console.WriteLine("In Derived Class's OverRideMe");
Console.Read();
}
public void NewMethod()
{
Console.WriteLine("In Derived Class's NewMethod");
Console.Read(); …Run Code Online (Sandbox Code Playgroud) 我需要为控制器的每个动作的每个JSON答案附加一些信息.为此,我使基本控制器继承自标准MVC Controller类.我试着这样.但我抓住ArgumentException了这样的信息"Stream不可读".当ActionResult对象将数据写入正文时,可能会关闭流.我能做什么?
public override void OnActionExecuted(ActionExecutedContext context)
{
var respApi = new ResponseApiDTO();
respApi.Comment = "You could!!!";
JObject jRespApi = JObject.FromObject(respApi);
Stream bodyStream = context.HttpContext.Response.Body;
JObject jbody;
context.Result = Json(jbody);
using( var rd = new StreamReader(bodyStream))
{
string bodyText = rd.ReadToEnd();
jbody = (JObject)JsonConvert.DeserializeObject(bodyText);
jbody.Add(jRespApi);
context.Result = Json(jbody);
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下SQL存储过程,其中包含一个输入参数和一个out参数.
CREATE PROCEDURE [dbo].[spCanUserEdit]
(
@username nvarchar(255)
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @CanEdit bit
SELECT
@CanEdit = CanUserEdit
FROM tblUsers
WHERE username = LOWER(@username)
RETURN SELECT @CanEdit
END
GO
Run Code Online (Sandbox Code Playgroud)
在上面的存储过程中,CanUserEdit列tblUsers是位类型列,默认值为0.现在,当我在Management Studio中执行此过程时,它运行正常,但是当我command.ExecuteScalar()在我的C#代码中使用时,它总是返回null.谁能告诉我这里我做错了什么.
以下是我的C#方法
public static bool CanUserEdit(string userName)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[Constants.ConnectionStringName].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spCanUserEdit";
cmd.Connection = conn;
cmd.Parameters.Add(new SqlParameter("@username", userName));
conn.Open();
bool canEdit = (bool)cmd.ExecuteScalar();
return …Run Code Online (Sandbox Code Playgroud) c# ×10
.net ×3
asp.net-core ×1
base64 ×1
binary-tree ×1
casting ×1
events ×1
generics ×1
inheritance ×1
ninject ×1
sql ×1
textbox ×1
wpf ×1
xml ×1