| @@ -16,19 +16,4 @@ | |||
| <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.3" /> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <Compile Update="Properties\Resources.Designer.cs"> | |||
| <DesignTime>True</DesignTime> | |||
| <AutoGen>True</AutoGen> | |||
| <DependentUpon>Resources.resx</DependentUpon> | |||
| </Compile> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <EmbeddedResource Update="Properties\Resources.resx"> | |||
| <Generator>ResXFileCodeGenerator</Generator> | |||
| <LastGenOutput>Resources.Designer.cs</LastGenOutput> | |||
| </EmbeddedResource> | |||
| </ItemGroup> | |||
| </Project> | |||
| @@ -1,4 +1,6 @@ | |||
| using System.ComponentModel.DataAnnotations.Schema; | |||
| using System; | |||
| using System.ComponentModel.DataAnnotations.Schema; | |||
| using System.Text; | |||
| namespace EF_Code_First.Models | |||
| { | |||
| @@ -7,7 +9,19 @@ namespace EF_Code_First.Models | |||
| public int GradeId { get; set; } | |||
| public string? GradeName { get; set; } | |||
| public string? Section { get; set; } | |||
| [ForeignKey ("StudentId")] | |||
| [ForeignKey("StudentId")] | |||
| public ICollection<Student>? Students { get; set; } | |||
| public override string ToString() | |||
| { | |||
| StringBuilder builder = new StringBuilder(); | |||
| builder.Append(GradeId); | |||
| builder.Append('\u002C'); | |||
| builder.Append(GradeName); | |||
| builder.Append('\u002C'); | |||
| builder.Append(Students.Count); | |||
| return builder.ToString(); | |||
| } | |||
| } | |||
| } | |||
| @@ -22,14 +22,15 @@ namespace EF_Code_First.Models | |||
| StringBuilder builder = new StringBuilder(); | |||
| builder.Append(StudentId); | |||
| builder.Append(" :"); | |||
| builder.Append('\u002C'); | |||
| builder.Append(StudentName); | |||
| builder.Append(" :"); | |||
| builder.Append('\u002C'); | |||
| builder.Append(DateOfBirth); | |||
| builder.Append(" :"); | |||
| builder.Append('\u002C'); | |||
| builder.Append(Weight); | |||
| builder.Append(" :"); | |||
| builder.Append('\u002C'); | |||
| builder.Append(Height); | |||
| builder.Append(Grade.ToString()); | |||
| return builder.ToString(); | |||
| } | |||
| } | |||
| @@ -30,32 +30,19 @@ namespace EF_Code_First | |||
| List<Grade> grades = ctx.Grades | |||
| .Include(st=> st.Students) | |||
| .ToList(); | |||
| foreach (var grade in grades) | |||
| { | |||
| Console.WriteLine(grade.ToString()); | |||
| } | |||
| List<Student> students = ctx.Students | |||
| .Include(g=> g.Grade) | |||
| .ToList(); | |||
| foreach (var s in students) | |||
| { | |||
| //Console.WriteLine(s.Grade.ToString); | |||
| //var currentgrade = ctx.Grades.Single(g => g.GradeId == s.G_Id); | |||
| //Console.WriteLine($"Grade = {currentgrade.ToString} "); | |||
| StringBuilder b = new StringBuilder(); | |||
| b.Append(s.StudentName); | |||
| b.Append(": "); | |||
| b.Append(s.Weight); | |||
| b.Append(": "); | |||
| b.Append(s.Height); | |||
| b.Append(": "); | |||
| b.Append(s.DateOfBirth); | |||
| b.Append(": "); | |||
| b.Append(s.Grade.GradeName); | |||
| b.Append(": "); | |||
| b.Append(s.Grade.Section); | |||
| Console.WriteLine(b.ToString()); | |||
| Console.WriteLine(s.ToString()); | |||
| } | |||
| Console.WriteLine (ctx.DbPath); | |||
| @@ -1,63 +0,0 @@ | |||
| //------------------------------------------------------------------------------ | |||
| // <auto-generated> | |||
| // Dieser Code wurde von einem Tool generiert. | |||
| // Laufzeitversion:4.0.30319.42000 | |||
| // | |||
| // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn | |||
| // der Code erneut generiert wird. | |||
| // </auto-generated> | |||
| //------------------------------------------------------------------------------ | |||
| namespace EF_Code_First.Properties { | |||
| using System; | |||
| /// <summary> | |||
| /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. | |||
| /// </summary> | |||
| // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert | |||
| // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. | |||
| // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen | |||
| // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. | |||
| [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | |||
| [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||
| internal class Resources { | |||
| private static global::System.Resources.ResourceManager resourceMan; | |||
| private static global::System.Globalization.CultureInfo resourceCulture; | |||
| [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | |||
| internal Resources() { | |||
| } | |||
| /// <summary> | |||
| /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. | |||
| /// </summary> | |||
| [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||
| internal static global::System.Resources.ResourceManager ResourceManager { | |||
| get { | |||
| if (object.ReferenceEquals(resourceMan, null)) { | |||
| global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EF_Code_First.Properties.Resources", typeof(Resources).Assembly); | |||
| resourceMan = temp; | |||
| } | |||
| return resourceMan; | |||
| } | |||
| } | |||
| /// <summary> | |||
| /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle | |||
| /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. | |||
| /// </summary> | |||
| [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||
| internal static global::System.Globalization.CultureInfo Culture { | |||
| get { | |||
| return resourceCulture; | |||
| } | |||
| set { | |||
| resourceCulture = value; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -1,101 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 1.3 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">1.3</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1">this is my long string</data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| [base64 mime encoded serialized .NET Framework object] | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| [base64 mime encoded string representing a byte array form of the .NET Framework object] | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>1.3</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| </root> | |||